У меня есть класс:
export class BaseClass<T> {
constructor(data?: Partial<T>) {
Object.assign(this, data);
}
name: string;
id: number;
}
Из этого класса я расширяю свойства:
export class ExampleOne extends BaseClass<ExampleOne> {
isReusable: boolean;
}
export class ExampleTwo extends BaseClass<ExampleTwo> {
propOne: string;
propTwo: boolean;
}
Я использовал сопоставленный тип в BaseClass, чтобы я мог иметь "Синтаксис аналогичен синтаксису C # для инициализации объекта, а также повторного использования конструктора в последующих классах, наследующих BaseClass.
var x = new ExampleTwo({name: 'test', id: 1, propOne: 'test', propTwo: false});
Кажется, что все это работает нормально, но я хотел бы передать любойиз этих производных классов в качестве параметра для другой функции.
testFunction(data: BaseClass<T>) {
//logic
}
Я получаю сообщение об ошибке, утверждающее, что сборка Cannot find name T
.Я изменил подпись на
testFunction(data: BaseClass<any>) {
//logic
}
, и это, похоже, сработало, но я чувствую, что должен быть лучший способ справиться с этим.
Чего мне не хватает?