使用属性Request
定义ID
为必需和Name
可选的类型:
export type MyRequest =
{
ID: string,
Name?: string
};
我继续前进,通过它传递的JSON字符串化的测试它{ foo: "bar" }
应该是无效的type MyRequest
,因为所需的ID
字段缺少:
let jsonData = JSON.stringify( { foo: "bar" } );
let invalidData: MyRequest = JSON.parse(jsonData) as MyRequest;
console.log(invalidData);
令人惊讶的是它没有错误。
这是一个错误还是在这里json.parse
覆盖type
了 Typescript的强制执行?
当您将对象序列化为普通string
.
请记住,TypeScript 可以帮助在运行之前在任何可静态分析的地方键入代码。如果你告诉 TypeScript 的结果JSON.parse
是类型,MyRequest
它会在你使用的任何地方假设它,invalidData
但它不会在运行时检查类型,因为这不是 TypeScript 的目的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句