<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 內置對象 JavaScript 中有很多[內置對象][],它們可以直接在 TypeScript 中當做定義好了的類型。 內置對象是指根據標準在全局作用域(Global)上存在的對象。這里的標準是指 ECMAScript 和其他環境(比如 DOM)的標準。 ## ECMAScript 的內置對象 ECMAScript 標準提供的內置對象有: `Boolean`、`Error`、`Date`、`RegExp` 等。 我們可以在 TypeScript 中將變量定義為這些類型: ```ts let b: Boolean = new Boolean(1); let e: Error = new Error('Error occurred'); let d: Date = new Date(); let r: RegExp = /[a-z]/; ``` 更多的內置對象,可以查看 [MDN 的文檔][內置對象]。 而他們的定義文件,則在 [TypeScript 核心庫的定義文件][]中。 ## DOM 和 BOM 的內置對象 DOM 和 BOM 提供的內置對象有: `Document`、`HTMLElement`、`Event`、`NodeList` 等。 TypeScript 中會經常用到這些類型: ```ts let body: HTMLElement = document.body; let allDiv: NodeList = document.querySelectorAll('div'); document.addEventListener('click', function(e: MouseEvent) { // Do something }); ``` 它們的定義文件同樣在 [TypeScript 核心庫的定義文件][]中。 ## TypeScript 核心庫的定義文件 [TypeScript 核心庫的定義文件][]中定義了所有瀏覽器環境需要用到的類型,并且是預置在 TypeScript 中的。 當你在使用一些常用的方法的時候,TypeScript 實際上已經幫你做了很多類型判斷的工作了,比如: ```ts Math.pow(10, '2'); // index.ts(1,14): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. ``` 上面的例子中,`Math.pow` 必須接受兩個 `number` 類型的參數。事實上 `Math.pow` 的類型定義如下: ```ts interface Math { /** * Returns the value of a base expression taken to a specified power. * @param x The base value of the expression. * @param y The exponent value of the expression. */ pow(x: number, y: number): number; } ``` 再舉一個 DOM 中的例子: ```ts document.addEventListener('click', function(e) { console.log(e.targetCurrent); }); // index.ts(2,17): error TS2339: Property 'targetCurrent' does not exist on type 'MouseEvent'. ``` 上面的例子中,`addEventListener` 方法是在 TypeScript 核心庫中定義的: ```ts interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEvent { addEventListener(type: string, listener: (ev: MouseEvent) => any, useCapture?: boolean): void; } ``` 所以 `e` 被推斷成了 `MouseEvent`,而 `MouseEvent` 是沒有 `targetCurrent` 屬性的,所以報錯了。 注意,TypeScript 核心庫的定義中不包含 Node.js 部分。 ## 用 TypeScript 寫 Node.js Node.js 不是內置對象的一部分,如果想用 TypeScript 寫 Node.js,則需要引入第三方聲明文件: ```bash npm install @types/node --save-dev ``` ## 參考 - [內置對象][] - [TypeScript 核心庫的定義文件][] [內置對象]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects [TypeScript 核心庫的定義文件]: https://github.com/Microsoft/TypeScript/tree/master/src/lib --- - [上一章:聲明文件](declaration-files.md) - [下一章:進階](../advanced/README.md)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看