【发布时间】:2021-12-08 20:56:33
【问题描述】:
是我错了还是在解析 JSON 时 TypeScript 中的类型安全被抛弃了?
我应该在这里遇到错误,但我没有:
interface Person {
name: string
}
const person: Person = somePossibleFalsey ? JSON.parse(db.person) : undefined
上面的内容没有通过类型检查,当我认为它应该时。 db.person 变量可能不存在,这可能会将person 呈现为undefined。但是Person 不应该是undefined。据我所知,这是因为我使用的是JSON.parse。
只是为了确认我应该得到一个错误,这是另一个 sn-p,它正确给了我一个错误:
const person: Person = Math.random() > .5 ? { name: 'Arthur' } : undefined
上面的代码会产生相应的 TypsScript 错误:
Type '{ name: string; } | undefined' is not assignable to type 'Person'.
Type 'undefined' is not assignable to type 'Person'.ts(2322)
为什么JSON.parse 允许类型安全失败?或者这里还有其他什么在起作用?
【问题讨论】:
标签: javascript json typescript type-safety