🕌
TypeScript の string と String の使い方
概要
TypeScript を書いていると、引数や戻り値に string
型をよく使いますが String
型もあります.
この二つがどのような違いがあるのかちゃんと理解していなかったので、簡単にまとめてみました.
違い
string
はプリミティブ型、String
はオブジェクト型という違いがあります.
// string 型の変数を定義
const str1 = "string";
const str2 = String("string")
// String 型の変数を定義
const Str1: String = "String"
const Str2 = new String("String")
console.log(typeof str1) // string
console.log(typeof Str1) // object
この二つの型の使い分けですが、公式のドキュメントにあるように 基本的に string
を使っておけば良さそうです.
詳しい理由は書かれていないですが、String
の方がインスタンスを作るのでコストが高いとかだと思います.
参考資料
Discussion
インスタンス作成のコストは気にする必要はないです。どうせプリミティブ型のメソッドを呼び出す時はプリミティブラッパーオブジェクトが作られます。例えば、
というコードは
のように振る舞います。
それよりも、プリミティブラッパーオブジェクトはオブジェクトなので、一部の演算子などで挙動が異なるのが問題になり得ます。例えば、
は当然
true
になりますが、は
false
になります。なるほど. コメントありがとうございます.
記事のコメント部分は訂正線をしておきます.