我有一个像这个例子的通用接口,只有一个类型约束:
export interface IExample<T extends MyClass> {
getById(id: number): T;
}
是否可以指定多个类型约束而不只是一个?
答案 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的类声明 成员引入的命名类型与创建的类型完全相同 通过接口声明。