仅使用类的一部分声明变量

时间:2018-06-15 14:56:32

标签: javascript typescript class

我们假设我们有一个类:

class House {
    street: string;
    pools: number;
    helicopterLandingPlace: boolean;
}

现在我建立了一项服务来更新我的房子。

putHouse(house: House) {
    // some put request
}

但是有时候我希望房子的一部分能够得到更新。

patchHouse(house: ?????) {
    // some patch request...
}

在第二个函数中声明变量函数的最简洁方法是什么。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

实现此目的的一种方法是使用Partial类型,例如:



class House {
    street: string;
    pools: number;
    helicopterLandingPlace: boolean;
}

function patchHouse(house: Partial<House>) {
    console.log(house);
}

patchHouse({street: 'street'});
&#13;
&#13;
&#13;

引擎盖下

Partial<T>是一个具有以下定义的接口:

type Partial<T> = { [P in keyof T]?: T[P]; };

这意味着通过使用keyof运算符,我们得到类似的结果:

Partial<House> {
  street: string?;
  pools: number?;
  helicpterLandingPlace: boolean?;
}

答案 1 :(得分:1)

Interface segregation

interface Addressable {
    street: string;
}

interface Swimmable {
    pools: number;
}

interface Landable {
    helicopterLandingPlaces: boolean;
}

class House implements Addressable, Swimmable, Landable {
    street: string;
    pools: number;
    helicopterLandingPlaces: boolean;
}

function patch(house: Swimmable) {
    house.pools++;
}