# TS基本 関数

## 関数宣言 関数式

### 値の初期値 取得不可時の代入値

base.ts

```tsx
/* 一行の時はreturnも{}も省略可 */
const addBase = (a: number = 120, b?: number = 12): number => a + b

const x = addBase(undefined, 9)
const y = addBase(100)

console.log(x)
console.log(y)
```

![Quokkaでの即時表示 / Atom Editor](https://3765023942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M--q0S1rcX_AgYP0ixZ%2Fuploads%2F69tV0ELgNHwNPygrOl9I%2Fimage.png?alt=media\&token=ad855ed1-e3f2-4118-8b69-4229dc1907e1)

### オーバーロード

```javascript
// ===== 関数のオーバーロード =====

function overNum(a: number, b: number): number; // 関数のシグネチャ = 組み合わせ
function overStr(a: string, b: string): string;

// 実務的な書き方
function overLoad(a: any, b: any): any {
    if (typeof a === "number" && typeof b === "number") {
        return a + b
    }
    return a + " " + b
}
overLoad(1, 2)
overLoad("much", 2)
```

![result value](https://3765023942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M--q0S1rcX_AgYP0ixZ%2Fuploads%2F1edmrFzIyeacQtO9EeP3%2Fimage.png?alt=media\&token=cf0b6df8-dd61-447d-8bc4-215ae457e455)

オーバーライド パターン

![](https://3765023942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M--q0S1rcX_AgYP0ixZ%2Fuploads%2F3jxwa47gUF5uvM99kjX2%2Fimage.png?alt=media\&token=56e39d47-86d8-4d66-b65c-f6e9bb979a88)
