gpt4 book ai didi

typescript - TypeScript 中的联合类型——我能做到吗?

转载 作者:搜寻专家 更新时间:2023-10-30 20:42:06 26 4
gpt4 key购买 nike

我想实现以下目标:

class MyClass {    
boolProp: boolean;
}

let a: string | MyClass;
a.boolProp = false; // error

最后一行会抛出一个错误,因为 typescript 就是这样工作的。

我能否在没有typeguards 的情况下无错误地实现上述目标?我只想告诉编译器某个变量是 a 或 b 类型,所以它应该将它视为 both 类型属性和方法的“真正”联合,而不仅仅是常见的那些。

我熟悉其他语言的此类行为,并且根据我的口味,这似乎是对 typescript 的功能请求。

我错过了什么吗?

最佳答案

您希望补码类型联合,type intersection .

class MyClass {    
boolProp: boolean;
}

let a: string & MyClass;
a.boolProp = false; // no error

类型联合声明变量是一种类型或另一种类型,因此您唯一可以可靠访问的属性是两者共有的属性。类型交集声明变量满足两种类型契约,因此您可以访问属于其任一组件类型的属性——这正是您想要的。

关于typescript - TypeScript 中的联合类型——我能做到吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41800816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com