Node.js + TypeScript で開発しており、何らかの ORM を使っている時に、なった。
こういう時
class User {
email: string
}
下記のエラーが出る
Property 'name' has no initializer and is not definitely assigned in the constructor.
下記のように、単純に ?
で undefined
を許可すると
class User {
email?: string
}
下記のコードが通ってしまう
new User({ email: undefined })
これを避けるには、 assertion modifier (!)
を付けてあげれば良い
class User {
email!: string
}
この状態で下記のコードを書くと
new User({ email: undefined })
いい感じに怒られる。
Type 'undefined' is not assignable to type 'string'.