【问题标题】:How to create a generic type function that returing value that the type is based of a returned value of a passing in function?如何创建一个返回值的泛型类型函数,该类型基于传入函数的返回值?
【发布时间】:2020-07-22 04:41:54
【问题描述】:

我有一个函数,我可以这样称呼它:

var a=myFunction(callback(return 33))       // a should be of type {a}
var b=myFunction(callback(return 'string')) // b should be of {type b}
var c=myFunction(callback(return [33]))     // c should be of type {number[]}

我希望 ab 将是数字或字符串或任何基于从回调返回的参数。

myFunction 正在调用回调进行一些计算并返回相同类型的值。

如何为myFunction创建类型定义?

【问题讨论】:

    标签: typescript jsdoc type-definition


    【解决方案1】:
    const myFunction = <T>(callback: (...args: T[]) => T): T => {
        return callback();
    };
    
    const fnclbnum = (v: number): number => v * 2;
    const fnclbstr = (v: string): string => v +'test';
    const fnclbstrarr = (v: string[]): string[] => [...v, 'test'];
    
    const a: number = myFunction<number>((val) => fnclbnum(val));
    const b: string = myFunction<string>((val) => fnclbstr(val));
    const c: string[] = myFunction<string[]>((val) => fnclbstrarr(val));
    
    const d: number = myFunction<number>(() => fnclbnum(2));
    const e: string = myFunction<string>(() => fnclbstr("test"));
    const f: string[] = myFunction<string[]>(() => fnclbstrarr(["1", "ER"]));
    
    console.log({ d }, { e }, { f });
    

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      相关资源
      最近更新 更多