<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國際加速解決方案。 廣告
                [TOC] >[success] # 聲明文件 使用 **第三方庫** 時,很多 **第三方庫** 不是通過 **TypeScript** 寫的,它們是通過原生 **Javascript** 或 **瀏覽器** 或是 **nodeJS** 提供好的 **Runtime** 對象,比如 **document.window** , **nodeJS** 的 **process** 對象,它們直接在 **TS** 文件中使用肯定會 **報錯** 。 1. **錯誤場景** **場景** :那么假如我們要使用 **第三方** 的 **jQuery庫** ,常見的方式就是在 **html** 文件中通過 **script** 標簽引入 **jQuery** ,然后就可以 **全局使用 jQuery** 了代碼如下: **index.ts** ~~~ jQuery('#foo') ~~~ **編輯器圖片** : ![](https://img.kancloud.cn/a9/6b/a96bcf59b6513eac52c99a227b669790_360x123.png) 我們通常用 **jQuery('#foo')** 這種方式來獲取 **標簽元素** ,但是在 **ts 文件** 中,會報錯,它不知道 **jQuery** 是什么,所以這里會報錯。 2. **解決辦法** 上面那種情況,我們可以使用 **declare 關鍵字來告訴 tsc 這個變量已經在其他地方定義了,你拿來用就好了,請不要報錯** ,代碼如下: **index.ts** ~~~ // 聲明jQuery declare var jQuery: (selector: string) => any; // 使用jQuery jQuery('#foo') ~~~ **編輯器圖片**: ![](https://img.kancloud.cn/d6/be/d6be896666624e3460ea6d5829297356_444x107.png) 3. **標準寫法** 通常我們會把 **declare聲明語句** 放入一個單獨的文件中,一般是以 **.d.ts** 結尾的文件,**d** 就代表 **聲明**,它說明該文件只有適配 **ts** 的 **類型聲明**,我在 **根目錄** 下創建了一個 **jQuery.d.ts** ,就是聲明文件,此時我把 **index.ts** 中的聲明 **jQuery** 的代碼放入到 **jQuery.d.ts** 中,代碼如下: **jQuery.d.ts** ~~~ // 聲明jQuery // 注意:var jQuery 它并沒有真正的定義一個變量的實現,只是定義了全局變量 jQuery 的類型, // 僅僅會用于編譯時的檢查,并不是實現功能的真正代碼。 declare var jQuery: (selector: string) => any; ~~~ **index.ts** ~~~ // 使用jQuery jQuery('#foo') ~~~ 這樣其他地方在 **ts** 中使用 **jQuery** 就不會報錯了,因為一般來說,默認 **ts** 會解析項目中所有的 **.ts 與 .d.ts** 文件,所以當我們將 **jQuery.d.ts** 放到項目中時,我們 **所有的 ts 文件都可以獲得 jQuery 的類型定義了** 。 >[success] ## 第三方庫 當我們使用 **第三方庫** 時,是不是還要給它改裝呢? 從頭到尾 **declare** 一大堆文件呢 ?當然是不用的啦,我們有 **第三方聲明文件** ,社區跟官方早就為我們寫好了,比如 **jQuery** ,我們只需要 **npm install --save @types/jquery** 就會直接安裝 **jQuery** 的 **類型文件** 了,我們 **jQuery.d.ts** 文件中的內容就可以去掉了,代碼如下: **index.ts** ~~~ jQuery('#id').addClass('color-red') ~~~ 編輯器圖片: ![](https://img.kancloud.cn/b3/04/b3041a0d52cce50c2093e416efe97b90_1060x911.png) **jQuery 支持的方法** 以及對應的 **文檔** 就會直接提示出來,這樣我們就會非常的方便。 >[success] ## 提示 我們如果想找 **第三方** 的 **插件(庫)** 的 **聲明文件** ,可以從 [TypeSeach](https://www.typescriptlang.org/dt/search?search=) 中去搜索支持 **ts**的 **插件(庫)** 的 **聲明文件** ,除了在 **TypeSeach** 中可以找到 **插件(庫)** 的 **聲明文件** ,現在一般的 **插件(庫)** 都是 **源代碼自帶聲明文件** ,舉個例子,假如用 **npm install** 安裝某個 **插件(庫)** 時,它的 **類型定義就包含其中** 了,不需要像我們使用 **jQuery** 時候那樣,**先安裝本體,再安裝聲明文件** ,這種情況下我們可以 **一次安裝,雙重搞定** 。 <br/> 大家可能會好奇 **TypeScript** 是怎樣被定義,怎么樣被加載進來的呢?默認情況下所有可見的 **類型文件的聲明** 都會在 **編譯過程中** 到 **node_modules > @types** 下,以及它們的 **子文件夾** 下,在 **使用的時候都會被加載進來** , **當一個第三方庫沒有提供聲明文件時,就需要自己來聲明文件了** ,前面講了一些簡單的 **聲明文件** ,而真正書寫一個 **聲明文件** 不是很簡單的事情,不過它們也就是 **declare** 語法的組合而已,**declare** 可以聲明:**變量、 函數、 類、 接口** 等等,這里不再詳細講了,想了解可以到官方文檔中看。
                  <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>

                              哎呀哎呀视频在线观看