使用普通对象客户端?

时间:2017-12-08 18:45:57

标签: typescript

我从服务器收到一个普通对象,我声称它是一个接口,让我们说:

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}`;
}

有更好的方法吗?

1 个答案:

答案 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