之前回答了一个问题 https://segmentfault.com/q/10...
出于对其它面向对象强类型语言比如java,actionscript3中interface的经验,我回答了一句
一般接口只放方法(函数),不会定义属性
结果答案就被踩了,后来查了TS的文档发现,TS的interface确实可以定义property
这里我就有点困惑了,因为以前写别的强类型面向对象语言,interface一般都是用来描述高度抽象的行为所以一般情况下只定义方法(即使在语法上可以在interface中定义property,一般也不会这么去做),而property一般都是定义在class这个层面的。
由于没有系统学习过ts(基本就靠以前其它的语言经验拿来就上手了),所以这里请大家给我说说,ts这样设计的意义何在?如果要定义property为何不能用class代替呢?或者说我们在实际开发过程中是不是也应该规避在interface里定义property呢?
typescript只是在编译器进行静态类型检查的弱类型语言,而不是一个强类型语言
简单说一个点
当我们只是需要在约束一个对象的结构时,使用interface在编译为js后,不会产生额外的信息,interface在编译为js后会被擦除;而如果使用class(包括abstract class),则会产生一个额外的对象,而实际上我们只是需要类型检查,这个对象就是无用的
关于TypeScript Team对于interface的定位,也许可以参考这篇blog:Walkthrough: Interfaces