2013-07-07 7 views
11

Was macht der Index Signatur Identifier?In Typoskript, für was ist die Index Signatur Kennung?

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

Wo würde jemand "etwas" wieder verwenden?

Oder in anderen Worten, warum nicht die Syntax nur:

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

Ich nehme an, dass "etwas" den tatsächlichen Schlüssel zum Durchsuchen des Wörterbuchs statt nur seinen Typ dokumentiert. Ein Standardname von "key" sollte jedoch wahrscheinlich in 99% der Situationen funktionieren ... Es gibt einige Fälle (z. B. '' [styleName: string]: string''), bei denen ein benutzerdefinierter Name mehr Dokumentation liefern kann. –

Antwort

7

wäre meine Vermutung, dass dies aus Gründen der Einheitlichkeit und die Nähe zum JavaScript ist.

Genau wie es üblich Ihre Methode Argumente zu nennen (auch in Interfaces), alle Argumente zu Methoden, Konstrukteuren, Funktionen und Indexer in TS muss name: type oder name des Formats sein (was bedeutet, name: any). (Version der Geschichte vereinfacht, aber ich bin sicher, dass Sie mir bekommen)

Seit Namen und Typen in unterschiedlichen Namensräumen in Typoskript leben, ein Argument der Form string mehrdeutig sein würde. Denken Sie daran, dass TypeScripts Mission darin besteht, nahe bei JavaScript zu bleiben, daher wäre die Interpretation des oben genannten Arguments vom Typ string inakzeptabel und stellt sich in der Tat als string: any dar.

Des Weiteren, während Indexer könnte eine Ausnahme sein, weil sie nur von Typen string oder number sein kann, ist dies nicht immer der Fall ist (0,8 TS any erlaubt), so könnte ein weiterer Grund, die Migration auf 0,9 zu erleichtern.

Verwandte Themen