2017-03-04 1 views
0

Der folgende Code stammt aus dem Beispiel ngrx.Ist dieses Wörterbuch oder Hashtable in Typescript?

Was diese Erklärung tun wird? Entspricht dies in C# Dictionary oder Hashtable?

let typeCache: { [label: string]: boolean } = {};

Der ursprüngliche Code:

let typeCache: { [label: string]: boolean } = {}; 

export function type<T>(label: T | ''): T { 
    if (typeCache[<string>label]) { 
    throw new Error(`Action type "${label}" is not unique"`); 
    } 

    typeCache[<string>label] = true; 

    return <T>label; 
} 

Antwort

2

Ich bin mir nicht sicher über die C# -Aquivalenz, aber was es bedeutet in Typoskript ist ein reguläres Javascript-Objekt mit booleschen Eigenschaften, und es wird als Indexable Types bezeichnet.
Die Tasten können nur Zeichenketten oder Zahlen sein, wird dies nicht kompilieren:

let typeCache: { [label: Date]: boolean } = {}; // error: An index signature parameter type must be 'string' or 'number' 

Beispiele dafür, wie ein Wert aussehen würde:

type Indexable = { [label: string]: boolean }; 

let typeCache1: Indexable = { a: true, b: false }; 
let typeCache2: Indexable = { a: true, b: "string" }; // error: Type '{ a: true; b: "string"; }' is not assignable to type 'Indexable' 
0

dies Karte in Javascript, eine einfache Schlüssel/Wert-Karte. Einzelheiten finden Sie unter here.

+0

Nein, ist er nicht über eine 'Karte zu fragen ', er benutzt ein normales Objekt. –

Verwandte Themen