0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TypeScript プロパティの代入時チェックを行うデコレータを作った🥺

Posted at


    @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に条件式が成立しない値を代入するとエラーが発生します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?