【发布时间】:2021-11-19 19:14:15
【问题描述】:
我需要定义两种类型:
- 对象的类型,其中包含一些具有已定义类型值的数据
- 对象的类型,其中包含第一种类型的对象中包含的值的验证器
我的体会:
type Data = Record<string, string|number|Array<string>>
type Validators<T extends Data> = {
[P in keyof T]?: (value: T[P]) => string
}
interface MyData extends Data {
first: string,
second: number,
third: Array<string>,
}
const validators: Validators<MyData> = {
first: (value: string) => "",
};
有了这个认识,我得到了验证器对象的错误:
TS2322: 输入'{ first: (value: string) => string; }' 不可分配给类型 'Validators'。 属性 'first' 与索引签名不兼容。 类型 '(value: string) => string' 不可分配给类型 '(value: string | number | string[]) => string'。 参数 'value' 和 'value' 的类型不兼容。 键入'字符串 |号码 | string[]' 不可分配给类型 'string'。 类型“数字”不可分配给类型“字符串”。是否可以在 typescript 中定义此类类型?
【问题讨论】:
标签: typescript