您可以为TypeScript Generics指定多个类型约束

时间:2013-06-15 16:40:31

标签: typescript typescript-generics

我有一个像这个例子的通用接口,只有一个类型约束:

export interface IExample<T extends MyClass> {
    getById(id: number): T;
}

是否可以指定多个类型约束而不只是一个?

3 个答案:

答案 0 :(得分:59)

在支持联合类型的打字稿中,可以

{{1}}

答案 1 :(得分:27)

解决这个问题的方法是使用超级接口(它还回答了“为什么你允许接口继承类”的问题)。

interface ISuperInterface extends MyClass, OtherClass {

}

export interface IExample<T extends ISuperInterface> {
    getById(id: number): T;
}

答案 2 :(得分:1)

引用关于从类派生的接口的评论......名称中的什么?

我在0.9.0规范的第3.5节中找到了这个:

  

接口声明仅引入命名类型,而类   声明引入了命名类型和构造函数   创建那些命名类型的实现的实例。命名   类和接口声明引入的类型只有次要的   差异(类不能声明可选的成员和接口   不能声明私人成员)并且在大多数情况下   互换。特别是,只有public的类声明   成员引入的命名类型与创建的类型完全相同   通过接口声明。