MST

星途 面试题库

面试题:TypeScript条件类型在复杂复合类型构建的运用

在TypeScript中,设计一个条件类型工具`IfStringThenAppend`,它接受两个类型参数`T`和`U`。如果`T`是字符串类型,则返回`T`与`U`组成的联合类型;否则返回`T`。然后,基于这个条件类型,实现一个复杂类型转换的场景:给定一个类型数组,将其中字符串类型的元素都添加一个特定的后缀类型,并保持其他类型元素不变,最终返回转换后的联合类型。阐述实现思路及关键要点。
14.4万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

实现IfStringThenAppend条件类型

type IfStringThenAppend<T, U> = T extends string ? T | U : T;

实现复杂类型转换场景

type StringSuffix = 'suffix';
type TypeArray = [string, number, boolean];

type TransformedUnion = {
    [P in keyof TypeArray]: IfStringThenAppend<TypeArray[P], StringSuffix>;
}[number];

实现思路

  1. IfStringThenAppend条件类型:通过条件类型判断T是否为字符串类型,如果是,则返回TU组成的联合类型;否则返回T
  2. 复杂类型转换场景
    • 首先定义一个要添加的后缀类型StringSuffix
    • 然后使用映射类型遍历TypeArray,对每个元素应用IfStringThenAppend条件类型,根据元素是否为字符串类型决定是否添加后缀类型。
    • 最后通过索引访问[number]将映射类型转换为联合类型。

关键要点

  1. 条件类型的正确使用:在IfStringThenAppend中准确判断T是否为字符串类型。
  2. 映射类型的运用:利用映射类型遍历数组类型的每个元素,对其进行类型转换。
  3. 联合类型的生成:通过[number]将映射类型转换为联合类型,以得到最终结果。