[TypeScript]型の絞り込み
typeof
function showValue(value:string | number){ if(typeof value === "string"){ console.log(value.toUpperCase()); }else{ console.log(value.toFixed(2)); } }
instanceof
class John{ dance(){ console.log("let's dance!"); } } class Jeff{ calculate(){ console.log("1+1=5"); } } function execute(person:John|Jeff){ if(person instanceof John){ person.dance(); }else{ person.calculate(); } }
タグ付きユニオン型
interface Circle{ type:"circle"; radius:number; } interface Square{ type:"square"; width:number; } type Shape = Circle | Square; function showData(shape:Shape){ switch(shape.type){ case "circle": console.log("circle !"); break; case "square": console.log("square !"); break; } }