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.
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. –