其属性尊重另一个接口中每个属性的数据类型的类型

时间:2018-07-02 13:06:24

标签: typescript-typings

我正在尝试创建一个新的type,其属性由另一个接口组成,同时还要尊重该接口中属性的数据类型。我几乎可以正常工作,但似乎无法弄清楚如何定义数据类型映射。这就是我所拥有的。

interface Person {
    name: string;
    age: number;
}

interface PersonDataHandler<T> {
    value: T;
    handler: (prevValue: T) => void;
}

type PersonData<K extends Person> = {
    // Here' T should correspond to each data type defined for the property in Person.
    [P in keyof K]: PersonDataHandler<T>;
};

这是一个有效声明的例子。

const data: PersonData = {
  name: { value: "test", handler: (v: string) => {} },
  age: { value: 1, handler: (v: number) => {} }
};

这是无效的,因为value的类型与namePerson的定义类型不匹配。

const data: PersonData= {
  name: { value: "test", handler: (v: string) => {} },
  age: { value: "1", handler: (v: number) => {} }
};

0 个答案:

没有答案