面试题答案
一键面试- 思路分析:
- 首先,我们要使用映射类型来遍历
OriginalType
的每一个键。映射类型允许我们基于现有的类型创建新类型,通过对每个键进行操作来生成新的键值对。 - 对于每个键,我们需要在其前面加上
prefix_
前缀。这可以通过字符串模板字面量类型来实现。 - 对于值的类型,我们要将其变为数组类型。这可以通过在原类型的值类型后面加上
[]
来完成。
- 首先,我们要使用映射类型来遍历
- 代码实现:
type OriginalType = { a: string; b: number; c: boolean; };
type NewType = {
[K in keyof OriginalType as `prefix_${K}`]: OriginalType[K][]
};
[K in keyof OriginalType
:这里使用映射类型,K
会依次取OriginalType
的每个键。keyof OriginalType
会得到'a' | 'b' | 'c'
。as
prefix_${K}]
:这是使用字符串模板字面量类型,将K
前面加上prefix_
前缀,生成新的键名。例如当K
为'a'
时,新键名为'prefix_a'
。OriginalType[K][]
:这里OriginalType[K]
获取OriginalType
中键K
对应的值类型,然后[]
将其变为数组类型。例如当K
为'a'
时,OriginalType['a']
是string
,OriginalType['a'][]
就是string[]
。
这样就实现了从OriginalType
到NewType
的转换。