在javascript有很多内置对象,例如DOM、BOM,还有ES提供一些内置类型,例如Error、RegExp和Date,Error就是一般用于处理抛出错误信息;RegExp就是用于处理正则表达式;Date就是用于处理日期和时间格式。因此,这些定义的内置对象可以帮助我们更好定义和使用变量、函数和对象。对于开发者维护项目来说,只要熟悉这些内置对象类型可以帮我们提供编写健壮性高,类型安全以及可以快速的找到错误的位置,通过合理地使用这些类型,这样保证提高效率以及减少调试时间。
1.基本内置对象
ES标准提供主要是有Error、Date、RegExp等,可以在typescript定义的声明内置对象类型,如下:
let date:Date = new Date()
let error:Error = new Errow('报错')
let reg:RegExp = new RegExp(/\w/)
let num:Number = new Number(1)
可以看到提供了标准内置对象、以及它们的方法和属性。
2.DOM的内置对象
DOM就是文档对象模型,也就是说表示整个页面所有的内容都可以修改的。例如说:document.documentElement就是html元素;document.body就是body元素;document.head就是head元素。来看看在Typescript如何定义DOM的内置对象类型:
let div:HTMLDivElement = document.querySelector('div')
let canvas:HTMLCanvasElement = document.querySelector('canvas')
let body:HTMLElement = document.body
let allNode:NodeList = document.querySelectorAll('div')
// 另外如果没有特殊元素,例如header、footer、section元素等都是HTMLElement
let header:HTMLElement = document.querySelector('header')
let section:HTMLElement = document.querySelector('section')
let footer:HTMLElement = document.querySelector('footer')
// 如果对于DOM的内置对象类型记不住的话,可以通过断言来定义DOM内置对象类型
let div = document.querySelector('footer') as Element
let div:NodeList = document.querySelectorAll('div')
let div:NodeListOf<HTMLDivElement | HTMLElement> = document.querySelectorAll('div')
以上的代码讲了详情的DOM内置对象,在开发项目中应该常见的。
3.BOM的内置对象
BOM就是浏览器对象模型,也就是说可以修改、控制以及访问本身浏览器,也与浏览器进行交互。主要是有window对象(属性:例如屏幕窗口显示区等)、location对象(窗口url、地址栏信息)、history对象(url历史记录)、navigator对象(浏览器的配置信息) 等。Typescript如何定义BOM的内置对象类型如下:
let local: Storage = localStorage
let lo: Location = location
let cookie: string = document.cookie
let str:string = '123'
console.log(str)
let str:string = '123'
例如说开发官网项目,一般经常用到BOM的内置对象,尤其是根据监听滚动条判断是否到底部、或者当指定的屏幕显示区就显示内容,否则不在屏幕显示区就不显示内容。
4.特殊内置对象
另外还有Promies对象,在typescript中如何定义特殊对象,如下:
// Promise<>表示返回指定类型,例如下:
let promise: Promise<string> = new Promise((r) => r('james'))
let promise1: Promise<number> = new Promise((r) => r(1))
// 函数定义返回promise 语法规则:Promise<T> 类型
function promised(): Promise<number> {
return new Promise<number>((resolve, reject) => {
resolve(1)
})
}
promised().then(res => {
console.log(res)
})
这种Promise对象,typescript可以支持指定特殊类型,例如Promise类型。