面试题答案
一键面试实现思路
- 部分属性可选:使用映射类型遍历
BaseData
的属性,通过条件类型判断哪些属性需要变为可选。 - 属性类型转换:同样使用映射类型,结合条件类型,判断属性类型是否为字符串,若是则转换为大写字符串类型。
TypeScript类型定义代码
// 基础类型
type BaseData = {
name: string;
age: number;
address: string;
};
// 部分属性可选的变体类型,例如name属性变为可选
type OptionalNameBaseData = {
[K in keyof BaseData]: K extends 'name'? BaseData[K] | undefined : BaseData[K];
};
// 将所有字符串属性转换为大写字符串类型的变体类型
type UpperCaseStringBaseData = {
[K in keyof BaseData]: BaseData[K] extends string? Uppercase<BaseData[K]> : BaseData[K];
};