同じ名前で異なるシグニチャをもつ関数を定義する機能。 ```ts function plus(x: number, y: number, z: number): number function plus(x: string, y: string): string function plus(x: number|string, y: number|string, z?: number): number | string { if (typeof x === "number" && typeof y === "number" && typeof z === "number") { return x + y + z } else { return `${x}${y}` } } plus(1, 2, 3) // ^? function plus(x: number, y: number, z: number): number (+1 overload) plus("one", "two") // ^? function plus(x: string, y: string): string (+1 overload) ```