😎

【TS】unknown型ってなんじゃい!

2022/02/12に公開

unknown型

  • anyと同様にどんな型でも代入できる
  • unknown型に代入されたプロパティやメソッドは使用できない

プロパティやメソッドは使用できない例

const any6: unknown = {
  x: 0,
  y: 1,
  name: "origin",
};

console.log(any6.name);  // Object is of type 'unknown'

any型との比較

any型は、unknownとは違いプロパティやメソッドを使用できるが、any型の使用 = TypeScriptが型のチェックを放棄した型となるので、Typescriptの利点を活かしきれていない。
さらに、型チェックの放棄によりコンパイル時にエラーに気づけず、リリース後に不具合が見つかるなどの問題が発生する可能性が高くなる。
つまり、不完全なプログラムになってしまう。
一方、unknown型は、プロパティ、メソッドへのアクセスを行われないため、実行することができず、意図しないランタイム時のエラーを防止できる。

Discussion