【发布时间】:2022-08-16 21:58:59
【问题描述】:
我们使用以下基本接口使用映射类型指定类型
interface A {
a: string
b: number
c: number
}
如果我们像这样用自己的键索引映射类型
type B = {
[K in keyof A]: {
[K_ in K]: A[K_]
}
}[keyof A]
它将生成具有自己类型的每个键的联合
type B = {
a: string;
} | {
b: number;
} | {
c: number;
}
如果我们使用上面的方法,我们用自己的键索引一个映射类型,我们可以只提取一些具有匹配类型的键,如下例所示
type C = {
[K in keyof A]: A[K] extends number ? {
[K_ in K]: A[K_]
} : never
}[keyof A]
哪个会产生
type C = {
b: number;
} | {
c: number;
}
问题
是否可以进行我们在type C 中看到的相同条件选择,并且生成的不是联合而是完整类型,如下所示?
type C = {
b: number;
c: number;
}
标签: typescript