最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于TypeScript模塊導入的那些事

 更新時間:2018年06月12日 11:21:57   作者:三毛丶  
Typescrit的模塊機制與es6的模塊基本類似,也提供了轉(zhuǎn)換為amd,es6,umd,commonjs,system的轉(zhuǎn)換,下面這篇文章就來給大家詳細介紹了關(guān)于TypeScript模塊導入的那些事,需要的朋友可以參考借鑒,下面來一起看看吧

前言

模塊在其自身的作用域里執(zhí)行,而不是在全局作用域里;這意味著定義在一個模塊里的變量,函數(shù),類等等在模塊外部是不可見的,除非你明確地使用export之一導出它們。 相反,如果想使用其它模塊導出的變量,函數(shù),類,接口等的時候,你必須要導入它們,可以使用import之一。

模塊是自聲明的。在TypeScript里,兩個模塊之間的關(guān)系是通過在文件級別上使用import和export建立的。

下面話不多說了,來一起看看詳細的介紹吧

ES6 模塊導入的限制

我們先來看一個具體的例子:

在 Node 項目里,使用 CommonJS 規(guī)范引入一個模塊:

const koa = require('koa')

改寫為 TypeScript(1.5+ 版本)時,通常有兩種方式:

使用 ES6 模塊導入方式:

// allowSyntheticDefaultImports: false
import * as koa from 'koa'

使用 TypeScript 模塊導入語法:

import koa = require('koa')

兩者大部分是等價的,但 ES6 規(guī)范對 import * as 創(chuàng)建出的模塊對象有一點限制。

根據(jù)該規(guī)范,該模塊對象不可被調(diào)用,也不可被實例化,它只具有屬性。

因此,如果你想調(diào)用該對象,或者使用 new 方法,在 allowSyntheticDefaultImports: false 的配置下,應該使用例子中的第二種方式。

2.7 版本對 CommonJs/AMD/UMD 模塊導入的增強

在之前的版本,TypeScript 對 CommonJs/AMD/UMD 模塊的處理方式與 ES6 模塊相同,這會導致一些問題:

  • 如前文所提到的,當導入一個 CommonJs/AMD/UMD 模塊時,TypeScript 視 import * as koa from 'koa' 與 const koa = require('koa') 等價,但使用 import * as 創(chuàng)建的模塊對象實際上不可被調(diào)用以及被實例化。
  • 類似的,當導入一個 CommonJs/AMD/UMD 模塊時,TypeScript 視 import foo from 'foo' 與 const koa = require('koa').default 等價,但在大部分 CommonJs/AMD/UMD 模塊里,它們并沒有默認導出。

在 2.7 的版本里,TypeScript 提供了一個新選項 --esModuleInterop,旨在解決上述問題,
當使用該選項,且模塊為 CommonJs/AMD/UMD 時,它會導入一個可調(diào)用或是可實例化的模塊,同時它規(guī)定該模塊必須作為默認導入:

import koa from 'koa'
const app = new koa()

模塊導入僅僅是一些聲明類型

在以非相對路徑導入一個模塊時,你可能會看到 Could not find a declaration file for module 'someModule' 的錯誤, 此時你可以安裝對應模塊的聲明文件或者寫一個包含 declare module 'someModule' 的聲明文件。
實際上,當我們導入一個模塊時:

import koa from 'koa'
// import koa = require('koa')

它所做的事情只有兩個:

  • 導入模塊的所有類型信息;
  • 確定運行時的依賴關(guān)系。

當你加載此模塊,但并沒有使用,或僅當作類型來使用時,編譯后,此模塊將會被移除。

當不使用時;

import koa from 'koa'

編譯后:

僅當做類型使用時:

import koa from 'koa'
let k: koa

編譯后:

var k

做為值使用時,編譯后,此模塊將會被保留:

import koa from 'koa'
const app = new koa()

編譯后(假設(shè)使用 commonjs):

var __importDefault = (this && this.__importDefault) || function (mod) {
 return (mod && mod.__esModule) ? mod : { "default": mod };
};
var koa_1 = __importDefault(require("koa"));
var k = new koa_1.default();

注: __importDefault 為使用 --esModuleInterop 選項時產(chǎn)生的方法。

參考

http://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html
https://stackoverflow.com/questions/35706164/typescript-import-as-vs-import-require?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
https://basarat.gitbooks.io/typescript/content/docs/project/external-modules.html

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • JavaScript之a(chǎn)ppendChild、insertBefore和insertAfter使用說明

    JavaScript之a(chǎn)ppendChild、insertBefore和insertAfter使用說明

    這幾天需要用到對HTML節(jié)點元素的刪/插操作,由于用到insertBefore方法的時候遇到了一些麻煩,現(xiàn)在作為知識的整理,分別對appendChild、insertBefore和insertAfter做個總結(jié)
    2010-12-12
  • JavaScript實現(xiàn)音樂導航效果

    JavaScript實現(xiàn)音樂導航效果

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)音樂導航效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • bootstrap Validator 模態(tài)框、jsp、表單驗證 Ajax提交功能

    bootstrap Validator 模態(tài)框、jsp、表單驗證 Ajax提交功能

    這篇文章主要介紹了bootstrap Validator 模態(tài)框、jsp、表單驗證 Ajax提交功能的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2017-02-02
  • 詳解js私有作用域中創(chuàng)建特權(quán)方法

    詳解js私有作用域中創(chuàng)建特權(quán)方法

    這篇文章主要為大家詳細介紹了js私有作用域中創(chuàng)建特權(quán)方法,何為特權(quán)方法,特權(quán)方法就是有權(quán)訪問私有變量和私有函數(shù)的公有方法,感興趣的小伙伴們可以參考一下
    2016-01-01
  • JS實現(xiàn)逐頁將PDF文件轉(zhuǎn)為圖片格式

    JS實現(xiàn)逐頁將PDF文件轉(zhuǎn)為圖片格式

    這篇文章主要為大家分享了如何通過前端js將pdf文件轉(zhuǎn)為圖片格式,并且支持翻頁預覽、以及圖片打包下載,文中的示例代碼簡潔易懂,需要的可以參考一下
    2023-05-05
  • javascript實現(xiàn)加載xml文件的方法

    javascript實現(xiàn)加載xml文件的方法

    這篇文章主要介紹了javascript實現(xiàn)加載xml文件的方法,涉及JavaScript針對xml文件對象的相關(guān)加載與獲取操作實現(xiàn)方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Bootstrap圖片輪播效果詳解

    Bootstrap圖片輪播效果詳解

    這篇文章主要為大家詳細介紹了Bootstrap圖片輪播效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • JavaScript實現(xiàn)簡單拖拽效果

    JavaScript實現(xiàn)簡單拖拽效果

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)簡單拖拽效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Javascript的異步函數(shù)和Promise對象你了解嗎

    Javascript的異步函數(shù)和Promise對象你了解嗎

    這篇文章主要為大家詳細介紹了Javascript異步函數(shù)和Promise對象,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • JS動態(tài)更改div高度實現(xiàn)代碼例子

    JS動態(tài)更改div高度實現(xiàn)代碼例子

    在Web開發(fā)中通過使用JavaScript可以動態(tài)地修改HTML元素的屬性和樣式,下面這篇文章主要給大家介紹了關(guān)于JS動態(tài)更改div高度實現(xiàn)的相關(guān)資料,文中給出了詳細的代碼示例,需要的朋友可以參考下
    2023-11-11

最新評論

宜城市| 焦作市| 南京市| 顺昌县| 衡南县| 宜兰市| 罗甸县| 淅川县| 七台河市| 大连市| 怀化市| 平原县| 广灵县| 福泉市| 康马县| 黄冈市| 小金县| 衡阳市| 叶城县| 青浦区| 克什克腾旗| 西平县| 兴海县| 运城市| 蕲春县| 邛崃市| 赤水市| 西乌珠穆沁旗| 灌阳县| 西昌市| 水城县| 宜春市| 进贤县| 汝州市| 松江区| 阜宁县| 抚远县| 武清区| 姚安县| 霍邱县| 宽城|