Расширение TypeScript Map для ограничения типа данных - PullRequest
2 голосов
/ 19 июня 2019

Я пытаюсь создать класс FooMap, который расширяет класс TypeScript Map по умолчанию, ограничивая тип принимаемых параметров.Причина, по которой я расширяю класс Map, заключается в том, что я хочу написать методы для этого класса, к которым я буду обращаться из разных файлов.

Класс карты по умолчанию - Map<any,any>, однако класс FooMap будет аналогичен классу Map<number,Foo>, использующему встроенный тип number и определяемый пользователем тип Foo.FooMap будет принимать только эти пары ключ / значение.

Я пытался сделать это, передав карту в конструкторе, но я чувствую, что есть лучший способ сделать это.

// Say Foo class is defined as    
export class Foo {
    id: number;
    name: string;
}

Теперь класс FooMap будет иметь вид:

export class FooMap extends Map{
    constructor(otherMap : Map<number,Foo>){
        super(otherMap);
    }
}

Но это не работает, поскольку super() принимает только итерируемое, поэтому должен быть лучший способ расширить Mapкласс.

1 Ответ

2 голосов
/ 19 июня 2019

Вам нужно сделать так, чтобы ваш класс расширял полностью созданный экземпляр Map:

export class FooMap extends Map<number, Foo> {

но чтобы это сработало, вы должны нацелиться es6 (см. https://github.com/Microsoft/TypeScript/issues/10853)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...