类定义会创建两个东西:类的实例类型和一个构造函数。 因为类可以创建出类型,所以你能够在允许使用接口的地方使用类。我认为应该也是为方便扩展吧,比如你需要继承一个 class,修饰符这块确实需要考虑,class 有 private 成员,那么 interface 继承了,定义约束对象时就会报错。class Bar { private foobar?: number; } interface Foo extends Bar {} const obj: Foo = { foobar: 1 };报错,不能将类型“{ foobar: number; }”分配给类型“Foo”。属性“foobar”在类型“Bar”中是私有属性,但在类型“{ foobar: number; }”中不是。
我认为应该也是为方便扩展吧,比如你需要继承一个 class,
修饰符这块确实需要考虑,class 有 private 成员,那么 interface 继承了,定义约束对象时就会报错。
报错,不能将类型“{ foobar: number; }”分配给类型“Foo”。属性“foobar”在类型“Bar”中是私有属性,但在类型“{ foobar: number; }”中不是。