我从服务器收到一个普通对象,我声称它是一个接口,让我们说:
interface Person {
firstName: string;
lastName: string;
// ...
}
const person = json as Person;
我想避免在我自己的类中包含响应的样板和重复,如下所示:
class MyPerson {
public firstName: string;
public lastName: string;
// ...
public get fullName(): string {
return `${this.firstName} ${this.lastName}`;
}
constructor(data: Person) {
this.firstName = data.firstName;
this.lastName = data.lastName;
// ...
}
public serialize(): Person {
return {
firstName: this.firstName,
lastName: this.lastName
// ...
};
}
}
但我仍然希望拥有像fullName
这样的方法/吸气剂。
我考虑使用“C风格”类,传递普通对象并使用以实例作为第一个参数的函数:
function Person_getName(person: Person): string {
return `${person.firstName} ${person.lastName}`;
}
有更好的方法吗?
答案 0 :(得分:0)
您可以使用TypeScript 2.1(https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html)中引入的spread运算符。
所以在你的例子中:
const MY_PERSON = new MyPerson();
// ...
const person = { ...MY_PERSON, ...json };
如果你想要更好地理解语法,那就有一个好的explanation on Google developers