MST

星途 面试题库

面试题:TypeScript泛型绑定时机与类型推导的结合

假设有一个TypeScript函数工厂,它返回一个新的函数。新函数接受一个参数并返回该参数的某种转换结果。在函数工厂定义时需要绑定泛型,使得返回函数的类型能够根据传入的初始参数类型正确推导。例如传入一个字符串类型的初始参数,返回函数应接受字符串并返回字符串相关的转换结果(比如字符串长度)。请实现这个函数工厂,并解释泛型绑定时机对类型推导的影响。
34.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function createTransformer<T>(initialValue: T): (value: T) => number | string {
    if (typeof initialValue ==='string') {
        return (value: string) => value.length;
    } else if (typeof initialValue === 'number') {
        return (value: number) => value.toString();
    }
    return (value: T) => 0 as number;
}

// 示例使用
const stringTransformer = createTransformer('initial string');
const stringLength = stringTransformer('test string');

const numberTransformer = createTransformer(10);
const numberString = numberTransformer(20);

泛型绑定时机对类型推导的影响

  1. 泛型绑定时机:在函数工厂createTransformer定义时绑定泛型TT的类型由调用createTransformer时传入的initialValue的类型决定。
  2. 类型推导:通过这种方式,返回函数的参数类型会被推导为与initialValue相同的类型。例如,当传入一个字符串作为initialValue时,T被推导为字符串类型,返回函数的参数类型也为字符串类型,且返回值类型也会根据initialValue的类型在函数内部的逻辑确定。这保证了类型的一致性和安全性,使得在编译阶段就能捕获类型不匹配的错误。