中級 › switchで一部returnを書き忘れた原因と直し方 › パターン1
switchで一部returnを書き忘れた原因と直し方
union型の値をswitch文で分岐する関数で、一部のケースにしかreturnを書かないと、「関数がreturn文で終わっていない」というエラーになります。
1 type Shape = { kind: "circle"; radius: number } | { kind: "square"; side: number }; 2 function area(s: Shape): number { 3 switch (s.kind) { 4 case "circle": 5 return Math.PI * s.radius * s.radius; 6 ________________________________________________ ^ 7 } 8 } 9 console.log(area({ kind: "square", side: 4 }));
main.ts(2,26): error TS2366: Function lacks ending return statement and return type does not include 'undefined'.
空欄を埋めてコンパイルを通す
squareのケースにreturnが無いため、switch文が値を返さずに終わる経路が生まれます。全パターンをカバーしていないとtscが検出します。
次の問題