2017-09-12 2 views
0

Unten ist die Funktionssignatur,Wie Objektschlüssel als String Typ

export function getVideoBooleansParamsString(videoBooleans: { 
    string: { label: string; value: boolean } 
}): string {} 

Und das ist die arg Ich versuche, in passieren,

const videoBooleans = { video: { label: 'video', value: true } } 

Und es erzeugt die folgenden Fehler zu definieren,

(63,33): error TS2345: Argument of type '{ exchange: { filterType: string; filterValues: string[]; }; }' is not assignable to parameter of type '{string: FilterModel; }'. 
    Property 'string' is missing in type '{ exchange: { filterType: string; filterValues: string[]; }; }'. 

Was ich beabsichtige, zu erklären, ist ein Ziel, was auch immer der Schlüssel ist, um den Inhalt vonhat

Antwort

3

Die Art und Weise Sie es jetzt erwartet, dass die folgenden definiert haben:

const videoBooleans = { string: { label: 'video', value: true } }; 

getVideoBooleansParamsString(videoBooleans); 

Sie es wie folgt definieren können, wenn Sie wollen den Schlüssel eine beliebige Zeichenfolge sein:

export function getVideoBooleansParamsString(videoBooleans: { 
    [key: string]: { label: string; value: boolean } 
}): string { } 

Oder so, um genauer zu sein:

export function getVideoBooleansParamsString(videoBooleans: { 
    video: { label: string; value: boolean } 
}): string { } 

Sie auch eine Schnittstelle definieren, die die Funktion Unterschrift ein bisschen sauberer machen:

interface MyVideoType { 
    [key: string]: { label: string, value: true }; 
} 

export function getVideoBooleansParamsString(videoBooleans: MyVideoType): string { } 

const video: MyVideoType = { video: { label: 'video', value: true } }; 

getVideoBooleansParamsString(video); 
1

Sie benötigen einen Index für Ihre Parametertyp zu definieren:

export function getVideoBooleansParamsString(videoBooleans: { 
    [name :string] : { label: string; value: boolean } 
}): string {} 
Verwandte Themen