【发布时间】:2022-12-14 17:29:29
【问题描述】:
假设我有带有 2 个通用参数的函数 func
const func = <T extends {}, K extends keyof T>() => {};
和一个类型
interface Form {
a: boolean;
b: string;
}
然后我可以像这样调用它们而不会出现任何错误
func<Form, "a">();
func<Form, "b">();
现在我希望 func 只接受 T[K] = string 的键
换句话说
func<Form, "a">(); // should fail
func<Form, "b">(); // should pass
我的伪打字稿解决方案是
const func = <T extends {}, K extends keyof T : where T[K] extends string>() => {};
但这当然不会走得太远。有可能吗? 任何帮助表示赞赏。
【问题讨论】:
标签: typescript generics extends keyof