1. ホーム
  2. typescript

[解決済み] String型とstring型の違いは何ですか?

2022-03-23 13:03:01

質問

との違いをご存知の方はいらっしゃいますか? Stringstring をTypeScriptで作成することはできますか?これらは同じものであるべきだと考えてよいのでしょうか?

var a: String = "test";
var b: string = "another test";
a = b;
b = a; // this gives a compiler error!

現在のコンパイラのバージョンは言う。

Type 'String' is not assignable to type 'string'.
  'string' is a primitive, but 'String' is a wrapper object.
     Prefer using 'string' when possible.

それはバグですか?

解決方法は?

ここでは、その違いを示す例を挙げ、説明の一助とします。

var s1 = new String("Avoid newing things where possible");
var s2 = "A string, in TypeScript of type 'string'";
var s3: string;

String はJavaScriptのString型であり、これを できる を使用して新しい文字列を作成します。JavaScriptではリテラルが良いとされているため、誰もこれを行いません。 s2 を使用せずに新しい文字列を作成します。 new キーワードを使用せず、かつ、明示的に String オブジェクトを作成します。

string はTypeScriptの文字列型であり、変数やパラメータ、戻り値の型付けに使用できる。

その他の注意事項...

現在(2013年2月)のところ、両方 s1s2 は有効なJavaScriptです。 s3 は有効なTypeScriptです。

の使用 String . 文字列リテラルは、文字列を初期化するための正しい方法として普遍的に受け入れられているので、おそらく使う必要はないでしょう。JavaScript では、オブジェクト リテラルと配列リテラルを使用することも推奨されています。

var arr = []; // not var arr = new Array();
var obj = {}; // not var obj = new Object();

もし本当に文字列にこだわりがあるのなら、TypeScriptで2つの方法のどちらかで使うことができるだろう...。

var str: String = new String("Hello world"); // Uses the JavaScript String object
var str: string = String("Hello World"); // Uses the TypeScript string type