Peter Mekhaeil

TypeScript: Callable interface

Adding an interface for callable objects:

interface Callable {
  (): string;
}

const myCallable: Callable = function () {
  return "I was called";
};

const myFunction = myCallable;
const value = myFunction();
    // ^? const value: string

Another example with parameters:

interface Callable {
  (numOne: number, numTwo: number): number;
}

const addNumbers: Callable = function (numOne, numTwo) {
  return numOne + numTwo;
};

const myFunction = addNumbers;
const value = myFunction(1, 2);
    // ^? const value: number