Bỏ qua nội dung

Discriminated Union

Discriminated Union trong TypeScript là một loại union type sử dụng một thuộc tính chung, được gọi là discriminant, để thu hẹp tập hợp các kiểu có thể có của union.

type Square = {
kind: 'square'; // Thuộc tính phân biệt
size: number;
};
type Circle = {
kind: 'circle'; // Thuộc tính phân biệt
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