#MOC
[[ποΈγͺγγ©γ«ε(TypeScript)]]γδ½Ώγγγ¨γ§γ[[ποΈγ¦γγͺγ³ε(TypeScript)]]γε€ε₯ε―θ½γͺε½’εΌγ§ζ±γγγ¨γγ§γγγ
δΎ
```ts
type UploadStatus = InProgress | Success | Failure;
type InProgress = { type: "InProgress"; progress: number };
type Success = { type: "Success" };
type Failure = { type: "Failure"; error: Error };
function printStatus(status: UploadStatus) {
if (status.type === "InProgress") {
// γͺγγ©γ«εγ§ε€ε₯γγγγ¨γ§γprogressγγγγγ¨γε€ε₯γ§γγγγγ«γͺγ
console.log(`γ’γγγγΌγδΈ:${status.progress}%`);
} else {
// δΈη₯
}
}
```
## πγγγ₯γ‘γ³γ
- [ε€ε₯ε―θ½γͺUnionε - TypeScript Deep Dive ζ₯ζ¬θͺη](https://typescript-jp.gitbook.io/deep-dive/type-system/discriminated-unions)
- [ε€ε₯ε―θ½γͺγ¦γγͺγ³ε (discriminated union) | TypeScriptε
₯ιγγ΅γγ€γγ«TypeScriptγ](https://typescriptbook.jp/reference/values-types-variables/discriminated-union)
## πγγ¦γγ¦
## πγγ©γγ«γ·γ₯γΌγγ£γ³γ°