プリミティブ型 (primitive types)
JavaScriptのデータ型は、プリミティブ型とオブジェクトの2つに分類されます。
イミュータブル特性
JavaScriptのプリミティブ型の1つ目の特徴は、値を直接変更できない点です。つまりイミュータブル(immutable)です。一方、オブジェクトには、値を後で変更できるというミュータブル特性(mutable)があります。
プロパティを持たない
JavaScriptのプリミティブ型の2つ目の特徴は、基本的にプロパティがないことです。プリミティブ型のnull
とundefined
にはプロパティがありません。
js
null.toString(); // エラーになる
js
null.toString(); // エラーになる
ところが、文字列や数値などのプリミティブ型は、プロパティを持ったオブジェクトとして扱えます。
js
"name".length; // 4
js
"name".length; // 4
このように、プリミティブ型をまるでオブジェクトのように扱えるのはJavaScriptの特徴です。JavaScriptには、プリミティブ型をオブジェクトに自動変換する機能があります。この機能はオートボクシング(autoboxing)、自動ボックス化と呼ばれます。
📄️ ボックス化
多くの言語では、プリミティブは一般的にフィールドやメソッドを持ちません。プリミティブをオブジェクトのように扱うには、プリミティブをオブジェクトに変換する必要があります。プリミティブからオブジェクトへの変換をボックス化(boxing)と言います。
プリミティブ型の種類
プリミティブ型は次の7つがあります。
- 論理型(boolean):
true
またはfalse
の真偽値。 - 数値型(number):
0
や0.1
のような数値。 - 文字列型(string):
"Hello World"
のような文字列。 - undefined型: 値が未定義であることを表す型。
- ヌル型(null): 値がないことを表す型。
- シンボル型(symbol): 一意で不変の値。
- bigint型:
9007199254740992n
のようなnumber型では扱えない大きな整数型。
上のプリミティブ型以外は、JavaScriptにおいてはすべてオブジェクトと考えて問題ありません。配列や正規表現オブジェクトなどもすべてオブジェクトです。
学びをシェアする
・JSのプリミティブ型はイミュータブルでプロパティを持たない
・プリミティブをオブジェクトのように扱える「オートボクシング」がある
・プリミティブは7種類: boolean, number, string, undefined, null, symbol, bigint
・それ以外は全部オブジェクト
『サバイバルTypeScript』より