国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

關于TypeScript模塊導入的那些事

2024-05-06 15:33:27
字體:
來源:轉載
供稿:網友

前言

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

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

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

ES6 模塊導入的限制

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

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

const koa = require('koa')

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

使用 ES6 模塊導入方式:

// allowSyntheticDefaultImports: falseimport * as koa from 'koa'

使用 TypeScript 模塊導入語法:

import koa = require('koa')

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

根據該規范,該模塊對象不可被調用,也不可被實例化,它只具有屬性。

因此,如果你想調用該對象,或者使用 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 創建的模塊對象實際上不可被調用以及被實例化。 類似的,當導入一個 CommonJs/AMD/UMD 模塊時,TypeScript 視 import foo from 'foo' 與 const koa = require('koa').default 等價,但在大部分 CommonJs/AMD/UMD 模塊里,它們并沒有默認導出。

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

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')

它所做的事情只有兩個:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 辛集市| 冀州市| 互助| 临沧市| 和顺县| 银川市| 固镇县| 瑞丽市| 油尖旺区| 延长县| 芒康县| 汕头市| 南和县| 洛浦县| 抚松县| 丹棱县| 沙洋县| 阿勒泰市| 五莲县| 邢台县| 百色市| 安丘市| 天等县| 涟水县| 舞钢市| 翁源县| 新绛县| 嘉祥县| 黄平县| 凤阳县| 永吉县| 贡觉县| 金堂县| 天门市| 嫩江县| 信丰县| 定边县| 根河市| 乌什县| 文昌市| 辽宁省|