Type Script では、オブジェクトのプロパティのオブジェクトを読み取り専用にすることができます。
const person: { readonly name: string } = { name: 'Mike' } person.name = 21; // → Cannot assign to 'name' because it is a read-only property.
コンパイルされた JavaScript コードでは、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' }
ハッピーコーディング☀️
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3