Реализация индексатора в классе в TypeScript
В настоящее время возможно реализовать индексатор в классе в TypeScript?
class MyCollection {
[name: string]: MyType;
}
Это не компилируется. Конечно, я могу указать указатель на интерфейс, но мне нужны методы этого типа, а также индексатор, поэтому интерфейса будет недостаточно.
Спасибо.
Ответы
Ответ 1
Вы не можете реализовать класс с индексом. Вы можете создать интерфейс, но этот интерфейс не может быть реализован классом. Он может быть реализован на простом JavaScript, и вы можете указать функции, а также индекеры на интерфейсе:
class MyType {
constructor(public someVal: string) {
}
}
interface MyCollection {
[name: string]: MyType;
}
var collection: MyCollection = {};
collection['First'] = new MyType('Val');
collection['Second'] = new MyType('Another');
var a = collection['First'];
alert(a.someVal);
Ответ 2
Это старый вопрос для тех, кто ищет ответ: теперь можно определить индексированное свойство, например:
var lookup : {[key:string]:AnyType};
подпись ключа должна быть либо строкой, либо целым числом:
Интерфейсы на www.typescriptlang.org