Реализация индексатора в классе в TypeScript - программирование
Подтвердить что ты не робот

Реализация индексатора в классе в TypeScript

В настоящее время возможно реализовать индексатор в классе в TypeScript?

class MyCollection {
   [name: string]: MyType;       
}

Это не компилируется. Конечно, я могу указать указатель на интерфейс, но мне нужны методы этого типа, а также индексатор, поэтому интерфейса будет недостаточно.

Спасибо.

4b9b3361

Ответ 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