正確にはEnumにメソッドがはえたように見せる、だけど。。 以下のように、Enumと同じ名前のnamespaceを定義し、そこにメソッドを定義することで Enumにメソッドを定義したように見せられる。
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
namespace Weekday {
export function isBusinessDay(day: Weekday) {
switch (day) {
case Weekday.Saturday:
case Weekday.Sunday:
return false;
default:
return true;
}
}
}
const mon = Weekday.Monday;
const sun = Weekday.Sunday;
console.log(Weekday.isBusinessDay(mon)); // true
console.log(Weekday.isBusinessDay(sun)); // false
これは思いつかなかった。てかTSのEnumが貧弱すぎて困る。。このぐらい元々出来て欲しい。