有人知道TypeScript中String和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.那是个bug吗?
发布于 2013-02-06 19:04:07
下面是一个显示差异的示例,这将有助于解释。
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中使用它……
var str: String = new String("Hello world"); // Uses the JavaScript String object
var str: string = String("Hello World"); // Uses the TypeScript string type发布于 2016-01-25 21:19:17
这两种类型在JavaScript中是不同的,TypeScript - TypeScript只是给我们提供了语法来注释和检查类型。
String是指原型链中包含String.prototype的对象实例。您可以通过多种方式获取此类实例,例如new String('foo')和Object('foo')。您可以使用instanceof运算符测试String类型的实例,例如myString instanceof String。
string是string的基本类型之一,JavaScript值主要是使用文字(例如'foo'和"bar" )以及各种函数和运算符的结果类型创建的。您可以使用typeof myString === 'string'测试string类型。
在大多数情况下,string是您应该使用的类型--几乎所有接受或返回字符串的API接口都会使用它。当将所有JS原语类型用作对象时(例如访问属性或调用方法),它们都将与其相应的对象类型一起包装(boxed)。由于String目前在TypeScript's core library中被声明为接口而不是类,因此结构化类型意味着string被视为String的一个子类型,这就是为什么您的第一行通过编译类型检查的原因。
发布于 2019-07-19 20:33:59
在JavaScript中,字符串可以是字符串原语类型,也可以是字符串对象。下面的代码显示了其中的区别:
var a: string = 'test'; // string literal
var b: String = new String('another test'); // string wrapper object
console.log(typeof a); // string
console.log(typeof b); // object你的错误:
类型“string”不能赋值给类型“string”。“String”是一个基元,但“String”是一个包装对象。在可能的情况下,更喜欢使用'string‘。
因为您试图将类型string分配给string对象类型(通过new关键字创建),所以TS编译器会抛出。编译器告诉您,应该只将类型string用于字符串基本类型,并且不能使用该类型来描述字符串对象类型。
https://stackoverflow.com/questions/14727044
复制相似问题