Skip to content
Auf dieser Seite

Typescript

Dieses Package nutzt den Typ FilterSetConfig für Type-Hints. Der Typ ist Generisch aud erwartet mindestens einen Parameter. Im den folgenden Abschnitten werden beispiele Vorgestellt, wie diese genutzt werden können um verschiedene Verhalten abzubilden.

Data Parameter

Angenommen es existiert ein Model Category:

ts
interface Category {
    id: number
    name: string
}

Category als Parameter zu übergeben bewirkt, dass nur Attribute des Interfaces in der Konfiguration erlaubt sind:

ts
const config: FilterSetConfig<Category> = {
    id: { 
        in: [1,2,3]
    }
}

Nested Types

Nested-Types werden auch unterstützt:

ts
interface Book {
    id: number
    category: Category
}

...

const config: FilterSetConfig<Book> = {
    category: { 
        id:{
            in: [1,2,3]
        }
    }
}

Key-Configuration

Mit einer Key-Konfiguration ist es möglich zu spezifizieren welche Filter für eine Attribut erlaubt sind.

ts
interface CategoryKeyConfig {
    name : 'exact' | 'startwith' | 'endswith'
}

...

const config: FilterSetConfig<Category, CategoryKeyConfig> = {
    name: { 
        exact: 'Fantasy'
    }
}

Diese Konfiguration erlaubt nur exact, startwith und endswith für das Attribut name

TIP

Attribute, die in der Key-Konnfiguration nicht erwähnt werden, erlauben weiterhin alle Filter. Beachte, dass der value-Filter nicht ausgeschlossen werden kann.

Nested Types

Für Nested-Types wie folgt aussehen:

ts
interface BookKeyConfig {
    category : {
        name: 'exact' | 'startwith' | 'endswith'
    }
}

Das ist zwar etwas redundant, aber ermöglicht es, unterschiedliche Verhaltensweisen für die Modelle zu definieren. Um den redundanten Teil zu entfernen, kann die Konfiguration auch folgendermaßen geschrieben werden:

ts
interface BookKeyConfig {
    category : CategoryKeyConfig
}

Custom Filter

Custom-Filter können wie folgt definiert werden:

ts
interface CustomFilter {
  notIn: any[]
}

WARNING

Es gibt noch keine generische Type-Hints für benutzerdefinierte Filter. Die Verwendung von any als Typ erlaubt die Verwendung des Filters überall, lockert aber auch die Typisierung des übergebenen Wertes.:::

Um die Type-Hints zu aktivieren, muss der Filter einer Schlüsselkonfiguration hinzugefügt werden.

ts
interface CategoryKeyConfig {
  id: 'in' | 'notIn'
}

...

const config: FilterSetConfig<Category, CategoryKeyConfig, CustomFilter> = {
    id: { 
        notIn: [1,2,3]
    }
}