Javascript 如何在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

我有一个Typescript类,如:

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);