所以我有一个类型
type A = {
a?: T1,
b?: T1
}
我有一个功能
const fn: <N extends keyof A>(name: N) => ({ [P in N]: T2 })
= name => ({ [name]: T2 });
这种繁重的泛型表达式的想法是静态推断结果的类型。它有效,我编写fn('a')
并且编译器推断它的类型,<"a">(name: "a") => { a: T2; }
除了它说的函数本身Type '{ [x: string]: T2; }' is not assignable to type '{ [P in N]: T2 }'.
问题:有没有办法为函数编写类型,fn
从文字中保持良好的静态类型推断,但让讨厌的类型错误消失?
只需使用覆盖类型as
即可,但我的尝试没有成功。