Nie zawsze wdrożyć go w definicji klasy, ale tylko poprzez zajęcie instance[index]
, więc fooInterface
nie można być używany przez implements
w klasie TypeScript, ale można go użyć do opisania oczekiwanej struktury obiektu, np. var foo: fooInterface = {};
Opisując przestawną Przedmiot
wspólny wzorzec JavaScript jest użycie obiektu (na przykład {}) w drodze mapie z zestawem łańcuchów do ustalonej wartości. Gdy wartości te są równe tego samego typu, można użyć interfejsu do opisania tego indeksowania do obiektu , który zawsze generuje wartości określonego typu (w tym przypadku widżet ).
interface WidgetMap {
[name: string]: Widget;
}
var map: WidgetMap = {};
map['gear'] = new GearWidget();
var w = map['gear']; // w is inferred to type Widget
Cytat i przykładem Widget pochodzi z: http://blogs.msdn.com/b/typescript/archive/2013/01/24/interfaces-walkthrough.aspx
http://blogs.msdn.com/b/typescript/archive/2013/01/24/interfaces-walkthrough.aspx - Half Way w dół znajdziesz "Opisywanie obiektu indeksowanego". Moje czytanie jest takie, że nigdy nie zaimplementujesz go w definicji klasy, ale tylko przez adresowanie 'instancji [index]' - więc twój 'fooInterface' nie może być użyty przez' narzędzia 'ale tylko strukturalnie, np .: 'var foo : fooInterface = {}; 'Nie jest to jednak pewne - stąd raczej komentarz niż odpowiedź. – JcFx
To jest właściwie poprawne. Byłbym szczęśliwy, gdy oznaczyłbym to jako odpowiedź. Nie znajduje się w specyfikacji klasy. – basarat
Są też inne rzeczy w interfejsach maszynopisowych, których nie można zaimplementować w klasie, np. zadzwoń do podpisów – basarat