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

プリミティブ型 (primitive types)

JavaScriptのデータ型は、プリミティブ型とオブジェクトの2つに分類されます。

イミュータブル特性

JavaScriptのプリミティブ型の1つ目の特徴は、値を直接変更できない点です。つまりイミュータブル(immutable)です。一方、オブジェクトには、値を後で変更できるというミュータブル特性(mutable)があります。

プロパティを持たない

JavaScriptのプリミティブ型の2つ目の特徴は、基本的にプロパティがないことです。プリミティブ型のnullundefinedにはプロパティがありません。

js
null.toString(); // エラーになる
js
null.toString(); // エラーになる

ところが、文字列や数値などのプリミティブ型は、プロパティを持ったオブジェクトとして扱えます。

js
"name".length; // 4
js
"name".length; // 4

このように、プリミティブ型をまるでオブジェクトのように扱えるのはJavaScriptの特徴です。JavaScriptには、プリミティブ型をオブジェクトに自動変換する機能があります。この機能はオートボクシング(autoboxing)、自動ボックス化と呼ばれます。

📄️ ボックス化

多くの言語では、プリミティブは一般的にフィールドやメソッドを持ちません。プリミティブをオブジェクトのように扱うには、プリミティブをオブジェクトに変換する必要があります。プリミティブからオブジェクトへの変換をボックス化(boxing)と言います。

プリミティブ型の種類

プリミティブ型は次の7つがあります。

  1. 論理型(boolean): trueまたはfalseの真偽値。
  2. 数値型(number): 00.1のような数値。
  3. 文字列型(string): "Hello World"のような文字列。
  4. undefined型: 値が未定義であることを表す型。
  5. ヌル型(null): 値がないことを表す型。
  6. シンボル型(symbol): 一意で不変の値。
  7. bigint型: 9007199254740992nのようなnumber型では扱えない大きな整数型。

上のプリミティブ型以外は、JavaScriptにおいてはすべてオブジェクトと考えて問題ありません。配列や正規表現オブジェクトなどもすべてオブジェクトです。

学びをシェアする

・JSのプリミティブ型はイミュータブルでプロパティを持たない
・プリミティブをオブジェクトのように扱える「オートボクシング」がある
・プリミティブは7種類: boolean, number, string, undefined, null, symbol, bigint
・それ以外は全部オブジェクト

『サバイバルTypeScript』より

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