同じ名前で異なるシグニチャをもつ関数を定義する機能。
```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)
```