MST

星途 面试题库

面试题:TypeScript 泛型与条件类型的深度应用

利用TypeScript的泛型和条件类型,实现一个工具类型IfString,当传入的类型为字符串时,返回一个包含字符串长度属性的类型,否则返回原类型。例如:IfString<string>应返回{ length: number }; IfString<number>应返回number。请详细解释实现思路及关键步骤。
35.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type IfString<T> = T extends string? { length: number } : T;

实现思路

  1. 使用条件类型:在TypeScript中,条件类型允许我们根据类型关系来选择不同的类型。语法为 A extends B? X : Y,意思是如果类型 A 可以赋值给类型 B,则返回类型 X,否则返回类型 Y
  2. 判断是否为字符串类型:在 IfString 类型中,T extends string 用于判断传入的类型 T 是否为字符串类型。
  3. 返回不同类型:如果 T 是字符串类型,即 T extends string 为真,则返回 { length: number },因为字符串有 length 属性且类型为 number;如果 T 不是字符串类型,则返回原类型 T

关键步骤

  1. 定义泛型类型type IfString<T> 定义了一个泛型类型 IfString,其中 T 是待判断的类型参数。
  2. 条件判断:使用 T extends string 来判断 T 是否为字符串类型。
  3. 返回结果:根据条件判断的结果,使用 ? { length: number } : T 来返回相应的类型。如果是字符串类型,返回 { length: number };否则返回原类型 T