2019年01月09日

TypeScriptのreadonly修飾子とReadonly型

TypeScriptではプロパティにreadonly修飾子とつけることで再書き込みができないプロパティを定義することができます。

interface Foo {
readonly prop: string
}
const foo: Foo = {
prop: `ok`
}
foo.prop = `ng` // Error


Classプロパティも同様でreadonly修飾子をつけたものは変更ができない

class Foo {
readonly prop = `ok`
constructor() {
this.prop = `ng` // ng
}
}


また、Readonly型も用意されておりReadonly型にキャストすることで変更不可にすることもできる。

type Foo = {
prop: string
}
type FooReadonly = Readonly<Foo>
const foo: FooReadonly = {
prop: `ok`
}
foo.prop = `ng` // Error


参考: Readonly · TypeScript Deep Dive
posted by ねこまんま at 15:18 | テクニック | 更新情報をチェックする