MST

星途 面试题库

面试题:TypeScript 泛型约束与条件类型的深度结合

编写一个 TypeScript 类型工具 `FilterByProperty`,它接受两个类型参数 `T` 和 `K`。`T` 是一个对象类型,`K` 是一个属性名。该类型工具的作用是过滤掉 `T` 类型对象中不包含 `K` 属性或者 `K` 属性类型不符合某种约束(例如 `K` 属性类型必须是字符串类型)的属性,返回一个新的类型。例如,`type Example = {name: string; age: number; gender: string}; type Filtered = FilterByProperty<Example, 'name'>;` 此时 `Filtered` 应该是 `{name: string; gender: string}`。请使用 TypeScript 的泛型约束和条件类型来实现这个类型工具。
38.5万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type FilterByProperty<T, K extends keyof any> = {
    [P in keyof T as T[P] extends string ? P : never]: T[P];
};