据我所知,一个对象可以实现一个接口,一个对象可以扩展一个类。
但是,使用泛型类型时,必须使用extends
来表示对象必须实现接口。
例如:
interface ITest {
a:number;
}
function myF1<U extends ITest>(a:U){} //valid
function myF2<U implements ITest>(a:U){} //error
这种不一致是否有原因?使用implements
对我来说更有意义。
答案 0 :(得分:4)
对象可以实现接口,对象可以扩展类
一个类可以实现一个接口,一个类可以扩展一个类。接口也可以扩展接口(即,类型可以扩展类型),这与扩展其他类的类一致。这就是在这里发生的事情:当你写U extends ITest
时,你说通用类型U
扩展了类型ITest
。
此外,在TypeScript中,定义类时:
class Foo {}
...你实际上指的是两件事:第一,你说你想要一些代码(标准构造函数),第二,你指的是一个名为Foo
的类型,你可以用它作为如果它是一个界面,因为它几乎就是它。 (在某种意义上,类只是一个接口加上一些代码。)