通常情况下,我们可以期望在这样的示例中出现分配行为
type a<T>=T extends undefined ? "here":"there"
type b = a<boolean|undefined> // "here"|"there"
但是这在索引签名
中不起作用type test<
L extends { [index: string]: unknown },
> =
{
[K in keyof L]: L[K] extends undefined ?"here":"there"
}
type e = test<{a:boolean|undefined}> //{a:"there"}, was expecting {a:"here"|"there"}
如何解决这个问题?
update我找到答案了
type a<T>=T extends undefined ? "here":"there"
type b = a<boolean|undefined> // "here"|"there"
type test<
L extends { [index: string]: unknown },
> =
{
[K in keyof L]: a<L[K]>
}
type e = test<{a:boolean|undefined}> //{a:"here"|"there"}