1
按照specification section 3.4,这并不编译:是否可以对联合类型进行更严格的类型检查?
let s: string | number;
s = false; // not a string or a number
所以,从逻辑上,给出类A,B和C,我也希望这不是编译,但它的作用:
let a: A | B;
a = new C();
a = "hi";
a = {}; // a can be anything!
有没有一些解决方法可以在这里获得更严格的类型检查?此外,这是一个错误或设计?如果是通过设计,我真的不明白这个设计选择。
那么,为什么'了'分配给一个字符串?当然,一个字符串与空类没有相同的成员? – Asik
'a'不能分配给字符串。尝试一下。也许你的意思是“为什么字符串可分配给(空类型)A?”,在这种情况下,答案在常见问题解答中得到解答:https://github.com/Microsoft/TypeScript/wiki/FAQ#why-are-all -types-assignable-to-empty-interfaces –
是的,它倒退了。所以如果你想在TypeScript中使用类似标记接口或类的东西,你必须添加一些虚拟字段,或者有更好的方法吗? – Asik