System.currentTimeMillis()
在上面的代码中,我希望它在最后一行失败,因为分配给d的值不满足FooBar的类型。如果在分配过程中没有办法知道它,那之后我需要一种方法来检查它。我应该自己编写代码来检查每个键和值的类型吗?
答案 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并不像您希望的那样聪明,这是可以理解的。