如果我创建一个“数据”类型的非可选变量。为什么下一种情况下的值可能是未定义的,如何防止这种情况发生,例如,如果该值不是真正的值,则抛出错误? (如果类型中有很多变量,则无需手动检查每个值)。
`
type data = {
nonOptional: string
optional?: string
}
var val: string | any = "example"
val = undefined
var data: data = {nonOptional: val};
console.log("nonOptional value: " + data.nonOptional)
` 输出:“非可选值:未定义”
最佳答案
这称为联合类型折叠
如果您尝试将一个类型与另一个更宽的类型或 any
联合,它将折叠为更宽的类型或 any
您可以将 any
视为最广泛的类型
类型越窄,越安全 (而且更难编码,安全总是伴随着成本)
因此,如果可能的话,请避免 any
,因为它是最懒且最不安全的类型
关于Typescript - 为什么在这种情况下非可选变量可以是未定义的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74854667/