メインコンテンツまでスキップ

型強制 (type coercion)

JavaScriptにはデータ型がありますが、型が異なる2つの値に対し演算してもエラーにならない場合があります。たとえば、文字列型の"1"から数値型の1を減算した場合、数値型の0が計算結果として出てきます。

js
"1" - 1; //=> 0
js
"1" - 1; //=> 0

これは型強制(type coercion)と呼ばれる仕組みがあるためです。型強制とは、型が異なる2つの値を処理するとき、暗黙的に別の型へ変換されることを言います。

上の例では、文字列型の"1"が数値型の1に型強制された上で、- 1が演算されたため0が計算結果になるわけです。

型に厳しい言語では、型が異なる値同士の演算ができない言語もあるので、そのような言語に慣れている方は特に注意してください。

ちなみに、どんな型に型強制されるかは演算子によっても異なるので注意が必要です。たとえば、文字列型の"1"に数値型の1を加算する場合は、文字列型の"11"が計算結果になります。これは、数値型の1が文字列型の"1"に型強制された上で、"1" + "1"の文字列結合の演算になるためです。

js
"1" + 1; //=> "11"
js
"1" + 1; //=> "11"
学びをシェアする

文字列と数値など型が異なる2つの値を演算するとき、暗黙に型変換される「型強制」がJavaScriptにはある。

"1" - 1; //=> 0
"1" + 1; //=> "11"

『サバイバルTypeScript』より

この内容をツイートする
  • 質問する ─ 読んでも分からなかったこと、TypeScriptで分からないこと、お気軽にGitHubまで🙂
  • 問題を報告する ─ 文章やサンプルコードなどの誤植はお知らせください。