UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【TypeScript】Readonly

TypeScriptのReadonlyの使い所を調べてみた

typescript-jp.gitbook.io

function foo(config: {
    readonly bar: number,
    readonly bas: number
}) {
    // ..
}

let config = { bar: 123, bas: 123 };
foo(config);
// You can be sure that `config` isn't changed 🌹

オブジェクト型のプロパティをreadonlyにできる

readonlyと宣言されているプロパティを書き換えようとするとコンパイルエラーとなる

こちらの記事の結論によると qiita.com

可能な限りプロパティにreadonlyを付けましょう。特に、関数が引数としてオブジェクトを受け取る場合はreadonlyの使用を徹底しましょう。 とある

jsのconstのように『そのプロパティを勝手に変更するかもしれない』という意思表示と捉えられるので付けておくのが良さそう

readonlyは長い

記事にもあるように、わざわざreadolyを書くのは長すぎるのでReadonly<T>型を使うと良さそう

しかし、ネストしたオブジェクトに効果がないとのことなので注意が必要