@rule(age => 18 <= age && age <= 60, 'Value is out of range 18~60')
プロパティの代入時チェックを行いたい
TypeScriptにはデコレータでプロパティの動作をカスタマイズできる機能がある。それを利用して、プロパティへの代入時に値チェックを行うデコレータを作成した。
使い方は代入時チェックを行いたいプロパティに@rule
デコレータを付与する。
@rule
デコレータは引数に条件式とエラーメッセージを取る。
例) Userクラスのageプロパティに代入される値を18以上60以下にしたい場合...
class User {
@rule(age => 18 <= age && age <= 60, 'Value is out of range 18~60')
age: number;
name: string;
constructor(age: number, name: string) {
this.age = age;
this.name = name;
}
}
ageに条件式が成立しない値を代入するとエラーが発生します。