Closed
Description
TypeScript Version: 2.3.2
Code
interface Square {
kind: "square";
size: number;
}
interface Circle {
kind: "circle";
radius: number;
}
type Shape = Square | Circle
const area = (s: Shape) => { //Works
switch (s.kind) {
case "square": return s.size * s.size;
case "circle": return Math.PI * s.radius ** 2;
}
}
const area = (s: Shape) => {
const {kind} = s
switch (kind) {
case "square": return s.size * s.size; // size doesn't exist on Circle
case "circle": return Math.PI * s.radius ** 2; // radius doesn't exist on Square
}
}