假设此代码:
const add = <T, S>(prop: keyof T, item: S) =>
setEntity({
...input,
[prop]: [...(input[prop] || []), item]
})
keyof T
的类型应该是T
的类型,而不是接受prop
的任何键,T
的类型应该只选择其值可分配给{{1} }。
有可能吗?
谢谢!
答案 0 :(得分:1)
您可以尝试这样的事情:
type S = string | number;
interface T {
foo: string;
bar: boolean;
baz: number;
something: object;
}
type Assignable<Obj, Item> = {
[Key in keyof Obj]: Obj[Key] extends Item ? Key : never
}[keyof Obj];
type Example = Assignable<T, S>; // "foo" | "baz"