📜  TypeScript 中的“字符串”和“字符串”有什么区别?

📅  最后修改于: 2022-05-13 01:56:21.090000             🧑  作者: Mango

TypeScript 中的“字符串”和“字符串”有什么区别?

与 JavaScript 不同,TypeScript 使用静态类型,即它指定变量能够保存什么样的数据。由于 TypeScript 是 JavaScript 的上标,因此它也区分了字符串和字符串。在 JS(或 TS)中字符串对象的使用非常少。字符串对象具有向对象添加属性的特性。

通常,字符串(带有小“s”)表示原语,而字符串(带有大写“S”)表示对象。 JavaScript 支持五种类型的原语,字符串就是其中之一。您将从链接的文章中了解 JavaScript 中的变量和数据类型。

原始字符串:字符串(带有小“s”)表示原始字符串,原始字符串是不包含任何属性的值。字符串字面量和从字符串函数调用返回的一些字符串可以归类为原语(字符串)。可以使用包装器将原始字符串转换为对象。

句法:

var test1 = "A TypeScript variable of type 'string'";

对象字符串:对象是不同属性的集合。一个对象可以调用许多与其对应的方法。

句法:

var test2 = new String('another test');
  • 例子:
Javascript


Javascript


Javascript


输出:

object 
string 

在上面的代码中,我们看到变量“a”的类型是一个对象,而“b”是一个原始类型(字符串)。它表明字符串字面量是原始的。这里要注意的重要一点是,即使“b”不是对象,我们也可以使用方法。这是因为当通过 JavaScript 调用方法时,JavaScript 会将原语更改为其对象。这会在很短的时间内发生,只是为了执行该方法并返回到它的原始自我。那么为什么问题可能会出现为什么我们需要 String 对象!

需要字符串对象:
当我们使用关键字 new 时,TS 每次都会创建一个新对象,这与使用原始类型不同,如果变量具有相同的值,则它们指向相同的内存。请参考以下示例。

  • 示例 1:下面的示例将显示 a1 和 b1 如何显示为相等,因为它们是具有相同值的字面量,而 a2 和 b2 显示为不同,因为我们使用了创建两个不同对象的关键字 new。

Javascript


输出:

false
true
  • 示例 2: eval 的使用因原始字符串和对象而异。请参考以下示例。在这个例子中,我们将看到使用eval() 方法时字符串和 String 的不同之处。直接评估字符串原语,即 25 * 25 为您提供 525 作为输出,而对象将作为其自身提供输出,因为 eval() 如果它不是原始字符串,则返回不变的参数。我们还可以通过使用toString() 方法将对象更改为原始字符串来评估对象。

Javascript


输出:

525 
String { "1 + 1" }
2

正如我们在上面了解到的,字符串对象可以保存属性。我们可以使用 String 对象在属性中保存一个附加值。尽管这并不常用,但它仍然是 JS 的一个特性。

var primitive = 'hello';
var object = new String('HELLO');
primitive.prop = 'world';//Invalid
object.prop = 'WORLD';//Valid

字符串和字符串的区别:

string primitiveString object
The string primitives are used extensively.The String object are scarcely used.
The string primitives only hold the value.The String object have the ability to hold the property.
The string are immutable thus are thread safe.The String object is mutable.
The string primitive has no methods.The String object has methods.
Cannot create two different literals with the same value.You can create new objects with the keyword ‘new’.
It is a primitive data type.Wraps primitive data type to create an object.
Passed by value that is copy of primitive itself is passed.Passed by reference to the actual data.
When using eval() these are directly treated as source code.When using eval() these are treaded as a string.