MST

星途 面试题库

面试题:TypeScript条件类型之条件类型分发

已知有一个条件类型 `ElementType<T>`,它接收一个数组类型 `T`,返回数组元素的类型。例如 `ElementType<number[]>` 应该返回 `number`,`ElementType<string[]>` 应该返回 `string`。但要求使用条件类型分发来实现,不能使用 `T[number]` 这种简单方式。请写出实现代码,并解释条件类型分发在这个过程中的作用。
34.5万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type ElementType<T> = T extends (infer E)[] ? E : never;

条件类型分发的作用: 在上述代码中,T extends (infer E)[] 是条件类型判断部分。infer E 用于推断出数组 T 的元素类型 E。当 T 是一个数组类型时,条件成立,返回推断出的元素类型 E;如果 T 不是数组类型,条件不成立,返回 never。条件类型分发会在使用该类型时,针对联合类型的每个成员分别进行条件判断,例如当 T 是联合数组类型 number[] | string[] 时,会分别对 number[]string[] 进行判断,返回 number | string,实现对数组元素类型的准确提取。