🚧ボックス化 (boxing)
文字数カウントをしたいときはstr.length
とすれば文字数が得られます。数値を文字列にしたいときは(テンプレートリテラルを使わなければ)num.toString()
とすれば文字列が得られます。
プリミティブ型はオブジェクトではないのでプロパティやメソッドを持っていないはずです。ですがこのようなことができるのは、内部的にはJavaScriptがプリミティブ型の値をオブジェクトに変換しているからです。この暗黙の型変換をAutoboxingと呼びます。
ちなみにこのときに使われるオブジェクトを通称ラッパークラスと呼び、それらのインターフェースもTypeScriptにBoolean, Number, String, Symbol, BigInt
として定義されています。なおundefined
とnull
のラッパークラスはありません。
typescript
const bool: Boolean = false;const num: Number = 0;const str: String = "";const sym: Symbol = Symbol();const big: BigInt = 10n;
typescript
const bool: Boolean = false;const num: Number = 0;const str: String = "";const sym: Symbol = Symbol();const big: BigInt = 10n;
当然ながらラッパークラスはObject
をスーパークラスに持っているため、変数の型としてObject, {}
が定義されてしまうとAutoboxingをしたものと解釈され、代入ができます