【发布时间】:2022-01-18 11:03:19
【问题描述】:
我有这个接口,它只存储另一个接口的键(modelKey)和该键的值(value):
interface ValueHolder<T, H extends keyof T> {
modelKey: H;
value: T[H];
}
现在我想存储来自以下模型的horsePower,匹配类型在ValueHolder:
interface Car {
id: number;
horsePower?: number;
date: Date;
};
看起来像这样:
const test: ValueHolder<Car, keyof Car> = {
modelKey: 'horsePower',
value: 1000,
};
此时不会发生错误,它会很好地存储值。但你也可以传递Date 类型的值:
const test: ValueHolder<Car, keyof Car> = {
modelKey: 'horsePower',
value: new Date(),
};
因为无论出于何种原因,该值都可以接受所提供模型中所有类型的任何键:
(property) ValueHolder<Car, keyof Car>.value: string | number | Date | undefined
如果您提供modelKey horsePower,如何使接口ValueHolder 的value 键只接受undefined | number 类型的值?
【问题讨论】:
标签: typescript typescript-generics