2013-07-07 9 views
11

Che cosa fa l'identificatore della firma dell'indice?In typescript, qual è l'identificatore della firma dell'indice?

interface IIndex { 
    [something: string]: any; 
} 

Dove qualcuno dovrebbe usare "qualcosa" di nuovo?

O, in altre parole, perché non è solo la sintassi:

interface IIndex { 
    [string]: any; 
} 
+2

Suppongo che "qualcosa" documenti la chiave effettiva per cercare il dizionario anziché solo il suo tipo. Tuttavia, un nome predefinito di "chiave" probabilmente dovrebbe funzionare nel 99% delle situazioni ... Ci sono alcuni casi (ad es. '[StyleName: string]: string'') dove un nome personalizzato può produrre più documentazione. –

risposta

7

La mia ipotesi è che questo è per ragioni di coerenza e vicinanza a JavaScript.

Proprio come è comune dare un nome alle argomenti di metodo (anche nelle interfacce), tutti gli argomenti ai metodi, costruttori, funzioni e indicizzatori in TS deve essere del formato name: type o name (che significa name: any). (semplificato versione della storia, ma sono sicuro che si ottiene me)

Dal nomi ei tipi vivono in diversi spazi dei nomi a macchina, un argomento della forma string sarebbe ambiguo. Ricorda che la missione di TypeScript è di rimanere vicino a JavaScript, quindi interpretare quanto sopra come argomento di tipo string non sarebbe accettabile, e risulta che è effettivamente equivalente a string: any.

Inoltre, mentre indicizzatori potrebbe essere un'eccezione, perché possono essere solo di tipo string o number, questo non è stato sempre il caso (TS 0,8 accettati any), quindi un altro motivo potrebbe essere per facilitare la migrazione a 0,9.

Problemi correlati