老师您好,买这个课程较晚,不知道还有人看问题没:
关于您这章所讲的4个点中的最后一个(接口继承类),我有个疑问,ts这么设计这个功能意欲何为呢,毕竟这种接口对类继承从不论是在java、c++还是dart、kotlin这些语言中都没有见过。对此,我有如下猜测,ts中接口继承类这种做法,是否有提高代码语法层面约束能力之意(相较于其他语言接口(虚类)还有一定类的影子来说,ts的接口感觉更加纯粹的规则化)。比如,我要实现这个接口的类就必须继承某个父类以保证关键属性乃至关键方法__实现__的拥有(虽然接口中可以声明属性(但无法保证可见性,很多语言将此属性静态化),而方法在接口中无法实现(其他语言因为依赖关系是无法提供精准对象(实例)级的实现)),但如此说的话就有个问题,接口在一定程度上和类本就不互通,他两的属性方法互不干扰,那如此费力来约束意义就更加不明白了。另外,如果说接口有这样的约束的话,但是为何在下面这段代码上没有约束呢?
let ab = {} as SelectableControl;
ab.select = function () {
this.state = 's';
console.log(this);
};
ab.select();
按理state是私有的,或者是未定义的,但在这却能正常使用。
以上便是问题,有理解不对的请指正。