Skip to content

类型总览

JS 中的数据类型

  • string
  • number
  • boolean
  • null
  • undefined
  • bigint
  • symbol
  • object
    • Array
    • Function
    • Date
    • Error
    • ...

TS 中的数据类型

  • JS所有数据类型
  • 6个新类型:
    • any
    • unknown
    • never
    • void
    • tuple
    • enum
  • 两个用于自定义类型的方式:
    • type
    • interface

注意点

JS中的这些内置构造函数: Number, String, Boolean, 它们用于创建对应的包装对象, 在日常开发中很少使用TS中也是同理, 所以在TS中进行类型声明时, 通常都是小写的number, string, boolean

ts
let strA: string // 官方推荐写法
strA = 'Halo'
// strA = new String("World") // 不能将类型“String”分配给类型“string”。 “string”是基元,但“String”是包装器对象。如可能首选使用“string”

let strB: String
strB = 'Halo'
strB = new String("World")

console.log(typeof strA) // string
console.log(typeof strB) // object

原始类型和包装对象

  • 原始类型: 如number, string, boolean, 在JS中是简单数据类型, 它们在内存中占用空间少, 处理速度快
  • 包装对象: 如Number对象, String对象, Boolean对象, 是复杂类型, 在内存中占用更多空间, 在实际开发中很少使用包装对象创建对象

自动装箱

JS在必要时会自动将原始类型包装成对象, 以便调用方法或者访问属性

js
// 原始类型字符串
let str = 'Halo World'

// 当访问 str.length 时, JS 引擎做了以下工作
let size = (function() {
  // 1. 自动装箱,创建一个临时的 String 对象包装原始字符串
  let tempStringObject = new String(str);
  // 2. 访问 String 对象的 length 属性
  let lengthValue = tempStringObject.length;
  // 3. 销毁临时对象,返回长度值,JS引擎会自动处理对象销毁,开发中无感知
  return lengthValue;
})();