我不知道如何更正确地描述我的意思。
我需要一个像这样的接口(它在当前的实现中不起作用),但另外我想为 添加额外的值id
,但在这种情况下value
必须有一个类型unknown
interface IColumn<T extends object, AdditionalKeys extends string = never, U = keyof (T & Record<AdditionalKeys, any>)>
{
id: U;
format(value: T[U]): any;
}
预期行为:
interface IColumn<T extends object, AdditionalKeys extends string = never, U = keyof (T & Record<AdditionalKeys, any>)>
{
id: U;
format(value: T[U]): any;
}
interface ITest
{
key1: number;
key2: string;
key3: Date;
}
const columns: IColumn<ITest, "test">[] = [
{
id: "key1",
format(value) // должен быть тип number
{
return value;
}
},
{
id: "key2",
format(value) // должен быть тип string
{
return value;
}
},
{
id: "key3",
format(value) // должен быть тип Date
{
return value;
}
},
{
id: "test",
format(value) // должен быть тип unknown
{
return value;
}
},
{
id: "another", // Должна быть ошибка
format(value)
{
return value;
}
}
]
类型:
结果:
使用示例: