typescript JSON.parse和简单转换之间有什么主要区别吗?

wnrlj8wa  于 2023-03-04  发布在  TypeScript
关注(0)|答案(2)|浏览(134)

我这样说有什么区别吗?

interface/class MyRecord {
...
}

const record: MyRecord = { ... }

对比

const record: MyRecord = JSON.parse('{...}') as MyRecord?
nhaq1z21

nhaq1z211#

在第一个示例中,TypeScript将检查对象文本是否符合指定的类型,如果出现错误,则会出错。在第二个示例中,JSON直到运行时才被解析。as语句允许您Assert结果将为该类型,但TypeScript无法帮助您确保正确性。
JSON还限制了JSON支持的数据类型。
生成一个字符串,然后将其传递给JSON解析器,可能比只使用对象文字效率更低。

ktecyv1j

ktecyv1j2#

是的,第二种方法的类型安全级别与第一种方法不同。在第一种方法中,如果对象文字与接口或类定义的形状不匹配,则会出现TypeScript错误。相反,通过使用as关键字,您“假装”它是相同的类型,因此TypeScript不会检查形状匹配。

相关问题