MST

星途 面试题库

面试题:TypeScript 基于泛型和条件类型的复杂类型约束及推导

假设你有一个函数 `combine`,它接收两个参数 `a` 和 `b`。`a` 是一个对象,其属性名是字符串,属性值类型为 `T`;`b` 是一个函数,接收一个类型为 `U` 的参数并返回 `T` 类型的值。请通过泛型和条件类型,使得 `combine` 函数在调用时,能够根据 `a` 的属性值类型和 `b` 的返回值类型自动推断 `U` 的类型,并且只有当 `b` 的返回值类型与 `a` 的属性值类型完全匹配时,函数才能够正确编译。请实现这个 `combine` 函数及其相关的类型定义。
12.8万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type Combine<T, U> = T extends U? U : never;

function combine<T, U>(a: { [key: string]: T }, b: (arg: Combine<T, U>) => T): (arg: Combine<T, U>) => T {
    return b;
}