Skip to content
On this page

구별된 유니온(Discriminated Unions)

Title
구별된 유니온(Discriminated Unions)
Category
TypeScript
Tags
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;
	}
}

References

Released under the MIT License.