Typescript 确保泛型类型具有特定属性

Typescript 确保泛型类型具有特定属性,typescript,Typescript,如何确保泛型类型T实现某个属性 export class Helicopter<T> implements IFlyable<T> { constructor(private _value : T) { } get listOfEngines(): string[] { return _value.listOfEngines; } } 出口级直升机实施IFlyable{ 构造函数(私有值:T){ } 获取listOfE

如何确保泛型类型
T
实现某个属性

export class Helicopter<T> implements IFlyable<T> {
    constructor(private _value : T) {
    } 

    get listOfEngines(): string[] {
       return _value.listOfEngines;
    }
}
出口级直升机实施IFlyable{
构造函数(私有值:T){
} 
获取listOfEngines():字符串[]{
返回_value.listOfEngines;
}
}

目前,编译器抱怨类型
T
没有属性
listOfEngines
创建一个接口,并向类型参数
T
添加
扩展
限制:

export interface IHelicopterStructure {
    listOfEngines:string[];
}

export class Helicopter<T extends IHelicopterStructure> extends Structure implements IFlyable<T> {
    ...
}
导出接口IHelicopterStructure{
发动机列表:字符串[];
}
出口级直升机扩展结构实现IFlyable{
...
}

您要查找的内容称为约束:

只需指定T必须扩展的类型或接口,如手册所示

export class Helicopter<T extends IVehicle> implements IFlyable<T> {}
导出类直升机实现IFlyable{}