欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何導(dǎo)入TypeScript模塊-創(chuàng)新互聯(lián)

如何導(dǎo)入TypeScript模塊?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、甘南網(wǎng)站維護(hù)、網(wǎng)站推廣。

ES6 模塊導(dǎo)入的限制

我們先來(lái)看一個(gè)具體的例子:

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

const koa = require('koa')

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

使用 ES6 模塊導(dǎo)入方式:

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

使用 TypeScript 模塊導(dǎo)入語(yǔ)法:

import koa = require('koa')

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

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

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

2.7 版本對(duì) CommonJs/AMD/UMD 模塊導(dǎo)入的增強(qiáng)

在之前的版本,TypeScript 對(duì) CommonJs/AMD/UMD 模塊的處理方式與 ES6 模塊相同,這會(huì)導(dǎo)致一些問(wèn)題:

  • 如前文所提到的,當(dāng)導(dǎo)入一個(gè) CommonJs/AMD/UMD 模塊時(shí),TypeScript 視 import * as koa from 'koa' 與 const koa = require('koa') 等價(jià),但使用 import * as 創(chuàng)建的模塊對(duì)象實(shí)際上不可被調(diào)用以及被實(shí)例化。

  • 類似的,當(dāng)導(dǎo)入一個(gè) CommonJs/AMD/UMD 模塊時(shí),TypeScript 視 import foo from 'foo' 與 const koa = require('koa').default 等價(jià),但在大部分 CommonJs/AMD/UMD 模塊里,它們并沒(méi)有默認(rèn)導(dǎo)出。

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

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

模塊導(dǎo)入僅僅是一些聲明類型

在以非相對(duì)路徑導(dǎo)入一個(gè)模塊時(shí),你可能會(huì)看到 Could not find a declaration file for module 'someModule' 的錯(cuò)誤, 此時(shí)你可以安裝對(duì)應(yīng)模塊的聲明文件或者寫(xiě)一個(gè)包含 declare module 'someModule' 的聲明文件。
實(shí)際上,當(dāng)我們導(dǎo)入一個(gè)模塊時(shí):

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

它所做的事情只有兩個(gè):

  • 導(dǎo)入模塊的所有類型信息;

  • 確定運(yùn)行時(shí)的依賴關(guān)系。

當(dāng)你加載此模塊,但并沒(méi)有使用,或僅當(dāng)作類型來(lái)使用時(shí),編譯后,此模塊將會(huì)被移除。

當(dāng)不使用時(shí);

import koa from 'koa'

編譯后:

僅當(dāng)做類型使用時(shí):

import koa from 'koa'
let k: koa

編譯后:

var k

做為值使用時(shí),編譯后,此模塊將會(huì)被保留:

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 選項(xiàng)時(shí)產(chǎn)生的方法。

關(guān)于如何導(dǎo)入TypeScript模塊問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

當(dāng)前標(biāo)題:如何導(dǎo)入TypeScript模塊-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://chinadenli.net/article2/ddgsic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、建站公司響應(yīng)式網(wǎng)站、網(wǎng)站策劃、小程序開(kāi)發(fā)、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名