先日からトTypeScriptを学習してるのでアウトプットがてら書いていこうと思います!
間違い等あれば指摘して頂けると幸いです!
#any型とunknown型の違い
結論→any型は使用しないよう意識するべき!
そもそもTypeScriptは型定義することで事前にエラーをアラートしてくれる言語であるのに、それを放棄するイメージ。
#####any型・・・どんな型でも許容する
#####unknown型・・・代入された値によって型が決まる
実際に挙動の違いを書いていきます
###any型の挙動
export const anySample = () => {
let name:any = 'aaaa'
// string型が表示される→ string aaaa
console.log(typeof name,name);
name = 25
// number型表示される→ number 25
console.log(typeof name,name);
}
any型で定義すると、1つ目のconsoleではstringが表示され、
2つ目のconsoleではnumber型定義される
これがany型の挙動です!
###unknown型の挙動
export const unknownSample = () => {
let number: unknown = 10;
// number型が表示される
console.log(typeof number,number)
// この書き方はエラーが表示されます → オブジェクト型は 'unknown' です。
// const sum = numberValue + 10
if(typeof number === 'number'){
// number型と指定することで使用することができる
const sum = number + 10
console.log(sum)
}
}
const sum = number + 10
sumに10を追加しようとしても
エラー文で「オブジェクト型は 'unknown' です。」と表示されてしまいます。
そこで一度if文を使ってnumberはnumber型であることを証明してから使用するとうまくいきます!
unknown型を使用する時はif文を使って処理を切りわけることが必要です!
#最後に
JavaScriptは型定義する習慣がなかったから慣れないな〜