구별된 유니온(Discriminated Unions)
Title
구별된 유니온(Discriminated Unions)
Category
TypeScriptTags
Aliases
구별된 유니온(Discriminated Unions)
서로소 유니온
Created
2 years ago
Updated
last year
- 타입스크립트에서 template literal member를 Union을 구분하는데 사용할 수 있다.
ts
type Shape =
| {kind: 'circle'; radius: number}
| {kind: 'square'; x: number}
| {kind: 'triangle'; x: number; y: number};
function area(s: Shape) {
if (s.kind === 'circle') {
return Math.PI * s.radius * s.radius;
} else if (s.kind === 'square') {
return s.x * s.x;
} else {
return (s.x * s.y) / 2;
}
}
type Shape =
| {kind: 'circle'; radius: number}
| {kind: 'square'; x: number}
| {kind: 'triangle'; x: number; y: number};
function area(s: Shape) {
if (s.kind === 'circle') {
return Math.PI * s.radius * s.radius;
} else if (s.kind === 'square') {
return s.x * s.x;
} else {
return (s.x * s.y) / 2;
}
}