如何检查分配给变量的对象的类型是否正确?

时间:2019-12-09 11:24:09

标签: typescript

System.currentTimeMillis()

在上面的代码中,我希望它在最后一行失败,因为分配给d的值不满足FooBar的类型。如果在分配过程中没有办法知道它,那之后我需要一种方法来检查它。我应该自己编写代码来检查每个键和值的类型吗?

1 个答案:

答案 0 :(得分:0)

TypeScript仅用于静态类型检查。这意味着它只会在构建时(或集成时在代码编辑器中)抛出错误。

const d: FooBar = JSON.parse(JSON.stringify(b));  

上面一行的问题是JSON.parse返回类型any。这就是即使您添加了const d: FooBar-any个匹配FooBar的行也不会出错的原因。

你能做的是

const d: FooBar = JSON.parse(JSON.stringify(b)) as {foo: string, bar: string};

让TypeScript知道此字符串化然后解析的对象实际上是foo(字符串)和bar(字符串)。

实际上,甚至更好-您可以引用b的类型,而不必再次定义它

const d: FooBar = JSON.parse(JSON.stringify(b) as typeof b;

基本上,TypeScript并不像您希望的那样聪明,这是可以理解的。

TypeScript playground link