TypeScript 0.9+似乎为接口扩展类提供了如下功能:
class Foo implements IFoo {
/**
* This is bar
*/
bar = 2;
}
interface IFoo extends Foo { }
var x: IFoo,
y: Foo = new Foo();
有没有人知道此功能的意图?
根据我的经验,我从中获得的最大价值是在IDE(例如VS)中,它允许我在键入x.bar
或y.bar
时看到JSDoc。这非常有用,因为它避免了必须具有基本相同的属性/方法的重复文档。
由于文档方面的巨大优势,我倾向于迁移一堆接口来使用这种风格,但是我不希望做任何可能在某些时候从编译器中取出的东西,或者可能引起其他问题。关于这个功能,有什么我应该知道的吗?我应该知道这个功能的其他有用结果吗?
答案 0 :(得分:1)
我不知道这是否是实际意图,但它确实提供了一种实现多重继承的简单方法,而无需为此目的创建3个虚假接口:
class Tractor {
....
}
class Trailer {
....
}
interface ITractorTrailer extends Tractor, Trailer {}
class TractorTrailer implements ITractorTrailer {
....
}
答案 1 :(得分:1)
有没有人知道此功能的意图?
只是因为它允许您捕获接口中类的类型信息。
但我不想做任何可能在某些时候从编译器中删除的事情,或者可能导致其他问题
它是 stabalized 语言规范的一部分。请参阅7.1
http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf
InterfaceDeclaration:
interface Identifier TypeParametersopt InterfaceExtendsClauseopt ObjectType
InterfaceExtendsClause:
extends ClassOrInterfaceTypeList
明确ClassOrInterfaceTypeList