网站搜索

javascript - 带有调用签名实例化的 TypeScript 类型


在阅读 TypeScript 文档时,我偶然发现了这个:

type DescribableFunction = {
  description: string;
  (someArg: number): boolean;
};

function doSomething(fn: DescribableFunction) {
  console.log(fn.description + " returned " + fn(6));
}

我如何创建一个 DescribableFunction 的实例?

答案#1

编辑:这里有更清晰的方法:SO答案链接

我不明白你不进行类型转换怎么能做到。我会为创建 DescribableFunction 创建一个单独的函数:

function createDesirableFunction(description: string, func: (someArg: number) => boolean): DescribableFunction {
    const result = func;
    (result as DescribableFunction).description = description;
    return result as DescribableFunction;
}

这里是它的实际演示:Typescript Playground