chr*_*s01 6 javascript typescript
可以说我有一个类C和一个对象O的实例(来自JSON)。
class C {
str:string;
num:number;
}
var o = JSON.parse ("{\"num\":123, \"str\":\"abc\"}");
Run Code Online (Sandbox Code Playgroud)
有没有办法我可以用o分配/初始化C的实例,并且它可以检查未定义的值以及类型,而无需我自己在复制构造函数/函数中执行此操作?
如果值丢失/未定义或类型不匹配,我想获取错误或异常。
谢谢!
我来到这里想要从对象文字创建一个类实例。Object.assign()有效,但它不是类型安全的。当然,如果您有预期的 JSON 源,但我只想实例化一个具有已知状态的类。
从 TypeScript 文档来看,类也充当类型。因此,以下内容将起作用:
class C {
str: string;
num: number;
constructor(source: Partial<C>) {
Object.assign(this, source);
}
}
// Ok - all properties
const c1 = new C({
num: 123,
str: "abc"
});
// Ok - only some of the properties
const c1 = new C({
num: 123,
});
// Error: unknown property `unexpectedPropertyName`
const c2 = new C({
num: 123,
unexpectedPropertyName: "abc"
});
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以使用Object.assign:
class C {
str:string;
num:number;
}
var o = JSON.parse("{\"num\":123, \"str\":\"abc\"}");
const instance:C = Object.assign(new C(), o);
Run Code Online (Sandbox Code Playgroud)