78. 映射对象属性类型

中等0

实现一个通用的工具类型 MapTypes<T, R>,该类型将对象 T 中的类型转换为由类型 R 定义的不同类型,R 的结构如下:

type StringToNumber = {
  mapFrom: string; // 值为 string 的键
  mapTo: number; // 将转换为 number
}

例如:

type StringToNumber = { mapFrom: string; mapTo: number; }

type Res = MapTypes<{ iWillBeANumberOneDay: string }, StringToNumber>
// expected to be { iWillBeANumberOneDay: number; }

请注意,还可以是一个联合类型:

type StringToNumber = { mapFrom: string; mapTo: number; }
type StringToDate = { mapFrom: string; mapTo: Date; }

type Res = MapTypes<{ iWillBeNumberOrDate: string }, StringToDate | StringToNumber>
// expected to be { iWillBeNumberOrDate: number | Date; }

如果类型在我们的映射中不存在,则保持不变:

type StringToNumber = { mapFrom: string; mapTo: number; }

type Res = MapTypes<{ iWillBeANumberOneDay: string, iWillStayTheSame: Function }, StringToNumber>
// expected to be { iWillBeANumberOneDay: number, iWillStayTheSame: Function }
评论(0)
题库

TypeScript

加载中...