Lewati ke konten

Union Terdiskriminasi

Union Terdiskriminasi dalam TypeScript adalah jenis tipe union yang menggunakan properti umum, yang dikenal sebagai diskriminan, untuk mempersempit kumpulan kemungkinan tipe dalam union tersebut.

type Square = {
kind: 'square'; // Diskriminan
size: number;
};
type Circle = {
kind: 'circle'; // Diskriminan
radius: number;
};
type Shape = Square | Circle;
const area = (shape: Shape) => {
switch (shape.kind) {
case 'square':
return Math.pow(shape.size, 2);
case 'circle':
return Math.PI * Math.pow(shape.radius, 2);
}
};
const square: Square = { kind: 'square', size: 5 };
const circle: Circle = { kind: 'circle', radius: 2 };
console.log(area(square)); // 25
console.log(area(circle)); // 12.566370614359172