我想实现以下目标:
class MyClass { boolProp: boolean; } let a: string | MyClass; a.boolProp = false; // error
最后一行抛出一个错误,因为这就是typescript的工作原理.
我可以在没有错误的情况下实现上述目的,但是没有挡板吗?我只是希望能够告诉编译器某个变量或者是A型或B的,所以应该考虑它的"真实"的工会既类型的属性和方法,而不只是常见的.
我熟悉其他语言的这种行为,根据我的喜好,这似乎是打字稿的功能要求.
我错过了什么吗?
您希望补码键入联合,键入交集.
class MyClass { boolProp: boolean; } let a: string & MyClass; a.boolProp = false; // no error
类型联合会宣布变量是一种或另一种类型,因此您可以可靠访问的唯一属性是两者共有的属性.类型交集宣布变量满足两个类型契约,因此您可以访问属于其任一组件类型的属性 - 这是您想要的.