TypeScript

TypeScriptで関数にプロパティを定義する

問題

JavaScriptでは、関数もオブジェクトなので、こんなことができます。

func.ts
function func() {
  return "FUNCTION"; 
};
func.prop1 = "property 1";
func.prop2 = () => { 
  return "PROPERTY2";
};

func(); // -> FUNCTION
func.prop1; // property 1
func.prop2(); // -> PROPERTY2

では、このような場合、どうやって型定義するのでしょうか。

答え

functionとnamespaceでそれぞれ定義してあげます。

func.d.ts
declare function func(): string;
declare namespace func {
  let prop1: string;
  function prop2(): string;
}

以上です。よろしくお願いいたします。