Mik*_*son 5 typescript angular
假设我有一个非常简单的类,带有计算属性:
class Person {
firstName: string;
lastName: string;
get fuillName(): string {
return this.firstName + ' ' + this.lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个类型的对象Person:
let p: Person = {
firstName: 'John',
lastName: 'Smith'
};
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误:
输入'{firstName:string; lastName:string; }'不能赋值为'Person'.类型'{firstName:string;中缺少属性'fuillName'; lastName:string; }".
咦?fullName是一个只读属性.所以我按照这个问题并实现了一个部分初始化器:
constructor(init?: Partial<Person>) {
Object.assign(this, init);
}
Run Code Online (Sandbox Code Playgroud)
同样的错误.我知道我可以这样做:
let p = new Person();
p.firstName = 'John';
p.lastName = 'Smith';
console.debug(p.fullName);
Run Code Online (Sandbox Code Playgroud)
但是有没有使用JSON语法初始化类的简写?
如果你定义 Person 类如下:
class Person {
firstName?: string;
lastName?: string;
constructor(values: Object = {}) {
Object.assign(this, values);
}
get fullName(): string {
return this.firstName + ' ' + this.lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以按如下方式初始化新用户:
let p = new Person({firstName : 'John', lastName: 'Smith'}); //one line, two assignations
console.log(p.fullName);
Run Code Online (Sandbox Code Playgroud)
更进一步:
class Person {
....// as above
set fullName(fullName: string){
let splitName = fullName.split(" ");
this.firstName = splitName[0] || '';
this.lastName = splitName[1] || '';
}
}
let p = new Person()
p.fullName = "Paul Doe";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |