TL;DR

戻り値として自分自身を返す関数。自分を呼び出した結果ではなく、関数そのものを返す。その名のとおり、何度でも呼び出せる。

例

TypeScript では、型も再帰的に定義する。

type HungryFunc = (x: number) => HungryFunc
const hungryFunc = (x: number) => hungryFunc

hungryFunc(0)(1)(2) のように、続けていくらでも呼び出せる。

関連