如何解决打字稿:什么时候使用“未知”与“对象”? 关于object:关于undefined:
我对TypeScript还是很陌生,并试图根据我的知识和直觉来决定何时使用哪种类型。
您何时使用unknown
和object
?
来自https://www.typescriptlang.org/docs/handbook/basic-types.html:
关于object
:
object
是代表非基本类型的类型,即不是number
,string
,boolean
,symbol
,{{ 1}}或null
。
关于undefined
:
我们可能需要描述在编写应用程序时不知道的变量类型。这些值可能来自动态内容,例如来自用户-或者我们可能要有意接受我们API中的所有值。在这种情况下,我们想提供一种告诉编译器和以后的读者该变量可以是任何变量的类型,因此我们将其指定为
unknown
类型。
unknown
是unknown
的严格超集吗?
object
可能恰好是unknown
+ object
+ number
+ string
+ boolean
+ symbol
+ {{1 }}?如果不是这样:到底缺少了什么-精确地还是从概念上讲?
如果TypeScript版本对于回答这个问题很重要:我们假设3.9:-)。
解决方法
不要将这两种类型混合在一起。 object
是一种“真实”类型,它在运行时存在,它允许您处理Object的实例。我会说这只是常规的普通类型。
但是unknown
有点不同。创建它是为了保护完全没有类型的类型的操作。它拒绝这种类型的任何直接操作:
const x:unknown = 5;
x+= 1; // Object is of type 'unknown'.
它在运行时中也不存在,因此您无法创建未知实例或类似实例。
所以,我想说的是,unknown是与任何已定义类型相反的类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。