Javascript 如何在typescript中使用所有成员进行强制转换?
我有一个Typescript类,如:Javascript 如何在typescript中使用所有成员进行强制转换?,javascript,typescript,Javascript,Typescript,我有一个Typescript类,如: export class CreatePerson { name: string; surname: string; constructor(data?: any) { if (data !== undefined) { this.name = data["name"] !== undefined ? data["name"] : null; this.surnam
export class CreatePerson {
name: string;
surname: string;
constructor(data?: any) {
if (data !== undefined) {
this.name = data["name"] !== undefined ? data["name"] : null;
this.surname = data["surname"] !== undefined ? data["surname"] : null;
}
}
static fromJS(data: any): CreatePerson {
return new CreatePerson(data);
}
toJS(data?: any) {
data = data === undefined ? {} : data;
data["name"] = this.name !== undefined ? this.name : null;
data["surname"] = this.surname!== undefined ? this.surname: null;
return data;
}
然后在另一节课上,我试着投下另一节课:
var person = new CreatePerson();
var otherObject // this object contains the 'name' and 'surname' properties;
this.person = <CreatePerson> otherObject;
this.person.name //works as expected
this.person.surname // works as expected
this.person.toJS() // error saying that is not a function here
var person=new CreatePerson();
var otherObject//此对象包含“name”和“姓氏”属性;
this.person=otherObject;
this.person.name//按预期工作
this.person.name//按预期工作
this.person.toJS()//表示此处不是函数时出错
之后,
person
对象“松开”其方法。我如何才能转换到CreatePerson
保留所有方法?如果我的猜测是正确的,那么其他对象
是这样的:
{
name: "name",
surname: "surname"
}
如果是这种情况,那么您就不能直接将其转换为一个CreatePerson
因为typescript使用了以下功能:
let p1: CreatePerson = new CreatePerson();
let p2: CreatePerson = {
name: "name",
surname: "surname"
}
但是p2
不是CreatePerson
的实例,它只是共享了相同的结构,但是缺少方法
与强制转换相同,如果您有一个具有相同结构的对象,并将其强制转换为CreatePerson
,您仍然不会获得CreatePerson
的实例您需要执行以下操作:
var otherObject = { ... }
var person = new CreatePerson(otherObject);
如果我的猜测是正确的,那么
otherObject
是这样的:
{
name: "name",
surname: "surname"
}
如果是这种情况,那么您就不能直接将其转换为一个CreatePerson
因为typescript使用了以下功能:
let p1: CreatePerson = new CreatePerson();
let p2: CreatePerson = {
name: "name",
surname: "surname"
}
但是p2
不是CreatePerson
的实例,它只是共享了相同的结构,但是缺少方法
与强制转换相同,如果您有一个具有相同结构的对象,并将其强制转换为CreatePerson
,您仍然不会获得CreatePerson
的实例您需要执行以下操作:
var otherObject = { ... }
var person = new CreatePerson(otherObject);