![](/img/trans.png)
[英]How to initialize all members of an array to the same value in typescript?
[英]How to cast with all members in typescript?
我有一個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
之后,此person
對象“失去”它的方法。 我如何轉換為CreatePerson
保留所有方法?
如果我的猜測是正確的,那么otherObject
是這樣的:
{
name: "name",
surname: "surname"
}
如果是這種情況,那么您不能僅CreatePerson
並獲取CreatePerson
的實例。
因為打字稿使用結構化打字,所以以下工作:
let p1: CreatePerson = new CreatePerson();
let p2: CreatePerson = {
name: "name",
surname: "surname"
}
但是p2
不是CreatePerson
的實例,它只是共享相同的結構,但是缺少方法。
與轉換相同,如果您擁有一個具有相同結構的對象,並將其轉換為CreatePerson
您仍然不會獲得CreatePerson
的實例。
您需要這樣做:
var otherObject = { ... }
var person = new CreatePerson(otherObject);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.