String
TypeScript のとの違いを知っている人はいますかstring
? これらは同じであるはずだと考えていいでしょうか?
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.
それはバグですか?
ベストアンサー1
違いを示す例を以下に示します。説明に役立ちます。
var s1 = new String("Avoid newing things where possible");
var s2 = "A string, in TypeScript of type 'string'";
var s3: string;
String
は、新しい文字列を作成するために使用できるJavaScript の文字列型です。JavaScript ではリテラルの方が優れていると考えられているため、これを実行する人はいません。そのため、s2
上記の例では、new
キーワードを使用せず、オブジェクトを明示的に使用せずに新しい文字列を作成していますString
。
string
は TypeScript の文字列型であり、変数、パラメータ、戻り値の型指定に使用できます。
その他の注意事項...
現在 (2013 年 2 月)s1
と はどちらもs2
有効な 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