javascript - tip TypeScript cu instanțiere de semnătură de apel


În timp ce citeam documentația TypeScript, am dat peste asta:

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

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

Cum pot să creez o instanță a DescribableFunction?

Răspuns #1

Editare: iată metoda mai curată: linkul răspunsului SO

Nu văd cum ai putea să faci asta fără casting. Aș crea o funcție separată pentru crearea DescribableFunction:

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

Iată-l în acțiune: Typescript Playground