class 中的 Getter 始终未定义
Getter in class is always undefined
我有一个打字稿 class,其中包含一个 getter(这只是多个属性的串联)。
由于某些原因,getter总是returns未定义,即使里面的属性都已定义。
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.
问题是您将结果转换为人而不是实例化人的新实例。这是一个潜在的修复 -
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)
转换不会实例化 class,它只是告诉编译器将您的 result
视为 Person
class... 这可能不是案例还没有。
你必须做你可能期望演员自己做的事情,在你的 Person
class 中创建一个 constructor
并实例化 Person
的实例new
key-word.
export class Person {
constructor(res: any){
// assign properties
}
}
var desc = new Person(result).description;
我有一个打字稿 class,其中包含一个 getter(这只是多个属性的串联)。
由于某些原因,getter总是returns未定义,即使里面的属性都已定义。
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.
问题是您将结果转换为人而不是实例化人的新实例。这是一个潜在的修复 -
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)
转换不会实例化 class,它只是告诉编译器将您的 result
视为 Person
class... 这可能不是案例还没有。
你必须做你可能期望演员自己做的事情,在你的 Person
class 中创建一个 constructor
并实例化 Person
的实例new
key-word.
export class Person {
constructor(res: any){
// assign properties
}
}
var desc = new Person(result).description;