as const(const アサーション) とは
- 全ての値を
readonly
(読み取り専用、変更不可)にするアサーション。 - ネストしたオブジェクトに対しても
readonly
(読み取り専用、変更不可)にしてくれる - widening も抑止してくれる
● アサーションの参考資料
- https://e-words.jp/w/%E3%82%A2%E3%82%B5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3.html
- https://typescript-jp.gitbook.io/deep-dive/type-system/type-assertion
as const を使ってみる
オブジェクトで
値を変更しようとすると、
Cannot assign to 'first' because it is a read-only property.
「first
は読み取り専用だから、適用できないよ」と怒られる。
const sampleObj = {
first: '最初',
second: '2番目',
third: '3番目',
fourth: '4番目',
} as const
sampleObj.first = 'さいしょ' // Cannot assign to 'first' because it is a read-only property.
as const
をコメントアウトすれば怒られない。
const sampleObj = {
first: '最初',
second: '2番目',
third: '3番目',
fourth: '4番目',
} // as const
sampleObj.first = 'さいしょ'
配列で
配列でも同様。
値を変更しようとすると、
Cannot assign to '3' because it is a read-only property.
「3
は読み取り専用だから、適用できないよ」と怒られる。
const sampleArr = ['最初', '2番目', '3番目', '4番目'] as const
sampleArr[3] = 'フォース' // Cannot assign to '3' because it is a read-only property.
as const
をコメントアウトすれば怒られない。
const sampleArr = ['最初', '2番目', '3番目', '4番目'] // as const
sampleArr[3] = 'フォース'
最後に
ありがとうございました!!