面试题答案
一键面试type IfString<T> = T extends string? { length: number } : T;
实现思路
- 使用条件类型:在TypeScript中,条件类型允许我们根据类型关系来选择不同的类型。语法为
A extends B? X : Y
,意思是如果类型A
可以赋值给类型B
,则返回类型X
,否则返回类型Y
。 - 判断是否为字符串类型:在
IfString
类型中,T extends string
用于判断传入的类型T
是否为字符串类型。 - 返回不同类型:如果
T
是字符串类型,即T extends string
为真,则返回{ length: number }
,因为字符串有length
属性且类型为number
;如果T
不是字符串类型,则返回原类型T
。
关键步骤
- 定义泛型类型:
type IfString<T>
定义了一个泛型类型IfString
,其中T
是待判断的类型参数。 - 条件判断:使用
T extends string
来判断T
是否为字符串类型。 - 返回结果:根据条件判断的结果,使用
? { length: number } : T
来返回相应的类型。如果是字符串类型,返回{ length: number }
;否则返回原类型T
。