string 和 String 是有效的 TypeScript 类型。以下声明有效:
let foo: String = 'foo'
let bar: string = 'bar'
区别
string 是指 JavaScript 的基本类型,可以使用文本(单引号或双引号)或 String 函数(不使用 new 关键字)创建。
以下三个声明创建相同的字符串:
const message = 'hello'
const message = "hello"
const message = String('hello')
我们经常使用 typeof variable==='string' 来检查给定变量是否为原始字符串。
另一方面,String 是一个基本包装字符串的对象,用于操纵字符串。我们可以从构造函数中创建 String 的实例,例如 new String(…):
const message = new String('hello')
为了检查变量是否为 String 对象的实例,我们必须使用 instanceof 运算符:
if (variable instanceof String) {
  // ...
}
很高兴知道
将 String 对象分配给基本 string 变量:
let foo: String = 'foo'
let bar: string = 'bar'
foo = bar // OK
在编写时,String 被声明为 interface,以便将该 string 被视为 String 的子类型。因此,分配 foo = bar 不会导致任何问题。
但执行相反的赋值将抛出错误:
// ERROR: Type 'String' is not assignable to type 'string'.
// string 是一个基本类型,但 String 是一个包装器对象。
bar = foo
建议
根据官方 TypeScript 的注意事项,建议不要使用 Number、String、Boolean、Symbol 或 Object。
// Do NOT
const reverse = (s: String): String => {
    ...
}
// Do
const reverse = (s: string): string => {
    ...
}

 京公网安备 11010502036488号
京公网安备 11010502036488号