如何解决类型兼容性
TypeScript 文档声明: 类中的私有成员和受保护成员会影响它们的兼容性……这允许类与其超类进行赋值兼容,但不能与具有相同形状的不同继承层次结构中的类进行赋值。
问题是:为什么这条规则不适用于公共成员? 看下面的例子:
class Sugar {
do() { console.log('Let\s make our life sweeter!') }
}
class Dynamite {
do() { console.log('Let\s destroy everything!') }
}
let s: Sugar = new Sugar()
let d: Dynamite = new Dynamite()
// ...
// An inaccurate assignment:
s = d
// ...
s.do()
只有一个 TypeScript 允许做的不准确的赋值,你就会得到绝对出乎意料的结果。请注意,这些类没有任何共同的超类! 逻辑在哪里:比较私有和受保护的方法,不能从类外部调用,因此不能被错误调用,而不注意最容易出错的公共方法?
感谢提前解释!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。