# 定义
内置对象 是指根据标准(ECMAScript, DOM, BOM 等其他标准)在全局作用域 (Global) 上已经存在定义的对象。JavaScript 中有很多 标准内置对象 (opens new window), 它们可以直接在 TypeScript 中当做定义好了的类型。
# ECMAScript 的内置对象
从 MDN 中 JavaScript 标准内置对象 (opens new window) 中, 我们知道 JavaScript 有很多 内置对象, 比如 String, Boolean, Date等等。那在 Typescript 中, 我们改怎么取定义这些类型呢?
// https://github.com/microsoft/TypeScript/blob/2dd7a4bf939ffac4002ea9c76651166ba457ac70/src/lib/es5.d.ts#L497
const name: String = new String('Rain120');
// https://github.com/microsoft/TypeScript/blob/2dd7a4bf939ffac4002ea9c76651166ba457ac70/src/lib/es5.d.ts#L509
const handsome: Boolean = new Boolean(true);
// https://github.com/microsoft/TypeScript/blob/2dd7a4bf939ffac4002ea9c76651166ba457ac70/src/lib/es5.d.ts#L709
const birthday_month: Date = new Date('11');
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
这里我们使用 Typescript 来实现下 Boolean 定义。
interface Boolean {
/** Returns the primitive value of the specified object. */
valueOf(): boolean;
}
interface BooleanConstructor {
new(value?: any): Boolean;
<T>(value?: T): boolean;
readonly prototype: Boolean;
}
declare var Boolean: BooleanConstructor;
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
更多ES5 相关的内置对象定义在这👉👉👉 Here on Typescript Definition (opens new window)
# DOM & BOM 的内置对象
DOM (文档对象模型) (opens new window) 和 BOM (浏览器对象模型)提供了很多内置对象,比如 NodeList, HTMLElemnt 等内置对象。
// https://github.com/microsoft/TypeScript/blob/2dd7a4bf939ffac4002ea9c76651166ba457ac70/src/lib/dom.generated.d.ts#L10984
const divs: NodeList = document.querySelectorAll('div');
// https://github.com/microsoft/TypeScript/blob/master/src/lib/dom.generated.d.ts#L10984
interface Window {
history: History
}
console.log(window?.history)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
更多DOM 相关的内置对象定义在这👉👉👉 Here on Typescript Definition (opens new window)
# 包内置对象
当你使用 Typescript 写 Node 时, 你会发现很多都没有语法提示,这时,你需要执行下面的命令
npm install @types/node
1
在 @types/node 已经将 node 所有的内置对象的 typescript 的定义都定义好了,当前很多 typescript 包也都有这类的 type 定义, 你可以通过下列命令来 查询是否存在类型定义 且 安装类型定义文件
# 查询是否存在类型定义
npm search @types/xxx
# 安装
npm install @types/xxx
1
2
3
4
5
2
3
4
5
# 快来耍耍啊
# 🌰🌰
// template
1
# 游乐场
# 参考答案
// answer
1
# 参考资料
Typescript 核心文件库 (opens new window)