"square";
size: number;
}
interface Rectangle {
kind: "rectangle";
width: number;
height: number;
}
interface Circle {
kind: "circle";
radius: number;
}
type Shape = Square | Rectangle | Circle;
function area(s: Shape) {
switch (s.kind) {
case "square": return s.size * s.size;
case "rectangle": return s.height * s.width;
case "circle": return Math.PI * s.radius ** 2;
}
}
Принято. А что именно?
Просто интересно принято ли юзать union как ADT или это будет никому не понятно из ts разрабов
Принято и в доках это есть
Мне понятно, вполне норм. Я ещё в default добавил бы never asserting, чтобы расширять удобнее было
“default добавил бы never asserting” Это о чем? Я пока ток вкатываюсь в TS
использую хелпер match
Обсуждают сегодня