打字稿:确保泛型类型具有特定属性

时间:2015-12-10 13:20:20

标签: typescript

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

export class Helicopter<T> implements IFlyable<T> {

    constructor(private _value : T) {
        //something
    } 

    get listOfEngines(): string[] {
       return _value.listOfEngines;
    }
}

目前编译器抱怨类型T没有属性listOfEngines

2 个答案:

答案 0 :(得分:4)

您正在寻找的是约束:

http://www.typescriptlang.org/docs/handbook/generics.html#generic-constraints

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

export class Helicopter<T extends IVehicle> implements IFlyable<T> {}

答案 1 :(得分:3)

创建一个界面并为类型参数extends添加T限制:

export interface IHelicopterStructure {
    listOfEngines:string[];
}

export class Helicopter<T extends IHelicopterStructure> extends Structure implements IFlyable<T> {
    ...
}