Typescript 內置對象

Typescript 數組類型 這篇文章末咱們說起到了 Typescripe 一種內置對象node

在 Typescript 中內置對象是做爲已經定義好(內置)的類型去使用的,很顯然它是存在全局做用域(Global)上git

ECMAScript 內置對象

Boolean 這個內置對象來講吧,這樣的對象在 ECMAScript 中有不少。github

// buildInObjects.ts
let b1: boolean = new Boolean(1);
let b2: Boolean = new Boolean(1);

// 0.0.7/buildInObjects.ts:1:5 - error TS2322: Type 'Boolean' is not assignable to type 'boolean'.
    // 'boolean' is a primitive, but 'Boolean' is a wrapper object. Prefer using 'boolean' when possible.
    // 1 let b1: boolean = new Boolean(1);
複製代碼

第 1 行報錯,咱們在 Typescript 基礎類型 就分析過了,不能將 Boolean 分配給 boolean,前者是包裝器對象,後者是基本類型。這也間接說明第 2 行能正常運行的緣由了。typescript

DOM 與 BOM 內置對象

// buildInObjects2.ts
const body: HTMLElement = document.body;
const divList: NodeList = document.querySelectorAll('div');
document.addEventListener('click', (e: MouseEvent) => {
    // do something
});
複製代碼

示例中 HTMLElementNodeListMouseEvent 就是 DOM 與 BOM 內置對象。npm

總結:無論 ECMAScript 內置對象仍是 DOM 與 BOM 的內置對象,其文件定義在 TypeScript 核心庫的文件 中。下面就說說它。數組

在 Node.js 中應用

是否是也內置了呀?這個,這個不是了。你得引入第三方聲明文件。這裏牽扯到聲明文件,下一篇內容咱們來講說。瀏覽器

npm install @types/node --save-dev
複製代碼

TypeScript 核心庫的文件

它定義了瀏覽器環境全部類型,預置在 Typescript 中,因此咱們能隨手拿來用。而這些文件都幫咱們作了不少判斷工做了(一個字省心)。bash

// buildInObjects3.ts
Math.pow(10, '3');

// 0.0.7/buildInObjects3.ts:1:14 - error TS2345: Argument of type '"3"' is not assignable to parameter of type 'number'.
    // 1 Math.pow(10, '3');
複製代碼

經過錯誤提示咱們能夠推斷出 Math.pow 是這麼定義的markdown

// buildInObjects4.ts
interface Math {
    pow(x:number, y:number): number;
    join(x:string, y:string): string;
}

Math.join('1', '2');
Math.join('1', 2);

// 0.0.7/buildInObjects4.ts:7:16 - error TS2345: Argument of type '2' is not assignable to parameter of type 'string'.
    // 7 Math.join('1', 2);
複製代碼

在推斷 Math.pow 類型定義的同時,順便造了一個 Math.join,其輸入類型和輸出類型都是字符串,隨後調用這個方法時參數傳了數字類型,於是同 Math.pow(10, '3') 錯誤相似。app

本次代碼 Github

你能夠...

上一篇:Typescript 函數類型

下一篇:Typescript 元祖

目錄:Typescript 小書之入門篇

相關文章
相關標籤/搜索