我有一個包含 getter 的打字稿類(它只是多個屬性的串聯)。
出于某種原因,getter 總是回傳 undefined,即使里面的屬性都已定義。
import { IdDisplayName } from './';
export class Person {
id?: number;
age!: number;
personType!: IdDisplayName<number>;
name!: string = '';
public get description() : string {
return this.name ' ? ' (this.personType.displayName ?? 'No type')
'/' this.age;
}
}
我將資料作為 Json 接收并轉換為 Person,如下所示:
let person = result as Person;
let desc = person.description; //undefined, never enters the description getter code.
uj5u.com熱心網友回復:
強制轉換不會實體化一個類,它只是告訴編譯器把你result當作一個Person類來對待......這可能還不是這樣。
你必須做你可能期望演員自己做的事情,constructor在你的類中創建一個并用關鍵字Person實體化一個實體。Personnew
export class Person {
constructor(res: any){
// assign properties
}
}
var desc = new Person(result).description;
uj5u.com熱心網友回復:
問題是您將結果轉換為人,而不是實體化人的新實體。這是一個潛在的修復 -
import { IdDisplayName } from './';
export class Person {
constructor(result: 'your result type here') {
this.id = result.id;
this.age = result.age;
this.personType = result.personType;
this.name = result.name;
}
id?: number;
age!: number;
personType!: IdDisplayName<number>;
name = '';
public get description(): string {
return (
this.name
' ? '
(this.personType.displayName ?? 'No type')
'/'
this.age
);
}
}
那么它可以像這樣使用 -
let person = new Person(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/436126.html
