# 其他

# 内置对象

内置对象指根据标准(ECMAScript/DOM)在全局作用域上存在的对象

# ECMAScript内置对象

  • Boolean
  • Number
  • String
  • Date
  • RegExp
  • Error
  let bool: Boolean = new Boolean(0)
  let num: Number = new Number(true)
  let str: String = new String('abc')
  let tday: Date = new Date()
  let reg: RegExp = /^1/
  let err: Error = new Error('err msg')
  console.log(bool, num, str, tday, reg, err)

# BOM/DOM内置对象

  • Window
  • Document
  • HTMLElement
  • DocumentFragment
  • Event
  • NodeList
  let bool: Boolean = new Boolean(0)
  let num: Number = new Number(true)
  let str: String = new String('abc')
  let tday: Date = new Date()
  let reg: RegExp = /^1/
  let err: Error = new Error('err msg')
  console.log(bool, num, str, tday, reg, err)

  const div: HTMLElement = document.getElementById('#test')
  const divs: NodeList = document.querySelectorAll('div')
  document.addEventListener('click', (event: MouseEvent) => {
    console.log(event.target)
  })

  const fragment: DocumentFragment = document.createDocumentFragment()

  console.log(div)
  console.log(divs)
  console.log(fragment)

Javascript中有很多内置对象,可以直接在Typescript中当作现有类型使用

# 声明文件

当引用第三方库时,需要引用ta们的声明文件以获得对应的代码补全、接口提示等功能

如使用JQuery时,通常是在script标签引入JQuery,就可以使用全局变量$ || JQuery

但Typescript中,编译器不知道$ || JQuery是什么意思

JQuery('#foo') // 报错: Cannot find name 'jQuery'.

要正常使用第三方库,需要👇

  • 编写声明文件

    • 把声明语句放在单独的文件,格式:xxx.d.ts, 如JQuery.d.ts,ts会自动解析项目中所有声明文件
    • 【推荐】第三方库会定义对应的声明文件库,库文件名:@types/xxx,如npm install @types/jquery --save-dev
  • 编写声明语句

    • 使用declare关键字
    • declare var没有真正定义一个变量,只是定义了全局变量JQuery的类型,仅用于编译时的检查,编译完会删除
declare var JQuery: (selector: string) => any
JQuery('#foo')

// 编译结果
JQuery('#foo')