「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > TypeScript で readonly を使用する場合の注意事項

TypeScript で readonly を使用する場合の注意事項

2024 年 8 月 21 日に公開
ブラウズ:467

Cautions When Using readonly in TypeScript

読み取り専用プロパティの基本

Type Script では、オブジェクトのプロパティのオブジェクトを読み取り専用にすることができます。

const person: { readonly name: string  } = { name: 'Mike' }

person.name = 21;
// → Cannot assign to 'name' because it is a read-only property.

⚠️① readonly はコンパイル時のみです

コンパイルされた JavaScript コードでは、readonly 宣言が削除されるため、実行時にエラーとして検出されなくなります。

⚠️② readonly は再帰的ではありません。

const person: {
  readonly name: string;
  readonly academicBackground: {
    primarySchool: string
  }
} = {
  name: 'Mike',
  academicBackground: {
    primarySchool: 'School A'
  }
}

person.academicBackground.primarySchool = 'School B'
// You can change `person.academicBackground.primarySchool`

読み取り専用にしたい場合は、primarySchool にも readonly を設定する必要があります。

const person: {
  readonly name: string;
  readonly academicBackground: {
    readonly primarySchool: string
  }
} = {
  name: 'Mike',
  academicBackground: {
    primarySchool: 'School A'
  }
}

person.academicBackground.primarySchool = 'School B'
// → Cannot assign to 'primarySchool' because it is a read-only property.

読み取り専用

プロパティの数が増えると、それぞれにreadonlyを追加するのが面倒になり、コード量も増加します。
Readonly.
を使用してリファクタリングできます。

const obj: {
  readonly a : string;
  readonly b: string;
  readonly c: string;
  readonly d: string;
} = {
  a: 'a',
  b: 'b',
  c: 'c',
  d: 'd'
}

// ↓

const obj: Readonly = {
  a: 'a',
  b: 'b',
  c: 'c',
  d: 'd'
}

ハッピーコーディング☀️

リリースステートメント この記事は次の場所に転載されています: https://dev.to/noah-00/cautions-when-using-readonly-in-typescript-22d7?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3