精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Umd 的包如何導(dǎo)出 TS 類型

開發(fā) 前端
現(xiàn)在 TypeScript 的模塊都是 es module 的方式引入的,但有一些包是支持 umd 的,它們可能用各種方式引入模塊,為了實現(xiàn) umd 模塊的類型檢查,可以用 declare global 把導(dǎo)出的變量變?yōu)槿值摹?/div>

在 TypeScript 里聲明模塊,最早是用 namespace 和 module 的語法,后來支持了 es module,類型和變量會用 import 來導(dǎo)入、用 export 導(dǎo)出。

比如你寫了一個庫,導(dǎo)出的變量叫 Guang,它下面有 name 和 age 兩個屬性,所以你是這樣聲明類型的:

export default Guang;

declare namespace Guang {
export const name = 'guang';
export const age = '20';
}

使用的時候用 import 來導(dǎo)入:

import Guang from 'xxx';

console.log(Guang.name, Guang.age);

這樣是沒啥問題。

但如果這個庫除了支持 es module 的方式使用,還支持 umd 呢?

UMD 規(guī)范想必大家很熟悉了,就是判斷是 CMD、AMD 還是全局變量的方式,然后用合適的模塊規(guī)范導(dǎo)出模塊的值:

圖片

但這里面不包含 es module,因為它不是 api 而是語法。

那如果你構(gòu)建出了 umd 規(guī)范的代碼,使用者用 script 的方式給引入了:

圖片

這樣還能做類型提示和檢查么?

不能了,因為你導(dǎo)出是用的 esm 的 export,只有 import 引入才會有類型提示和對應(yīng)的檢查。

那怎么辦呢?

用 declare global 聲明為全局類型?

declare global {
namespace Guang {
export const name = 'guang';
export const age = '20';
}
}

這樣是能解決問題,但這樣在 esm 模塊里也不用 import 就可以直接用了,而我們想在 esm 里用 import,其他情況才用全局類型。

有啥方式能約束在 esm 里只能 import 用,但是其他地方可以做為全局類型呢?

TypeScript 專門為這種情況設(shè)計個了語法,叫 export as namespace xxx;

比如上面的代碼可以這樣寫:

export = Guang;
export as namespace Guang;

declare namespace Guang {
export const name = 'guang';
export const age = '20';
}

export = Guang 是兼容老的 ts import 語法的,支持 umd 得加上這一行,然后加上 export as namespace Guang;

這樣你在非 esm 里就可以通過全局類型的方式使用它了:

圖片

而在 esm 里,如果也是這樣用的,它會報錯:

圖片

說是你在 esm 模塊里用了一個 UMD 的 global 類型,建議用 import 的方式代替。

如果你用 import 的方式引入了這個類型,就不報錯了:

圖片

這就是它比 declare global 好的地方,可以約束在 esm 里用 import 引入,非 es module 可以作為全局類型。

這樣就完美兼容了 esm 和 umd 兩種模塊引入方式。

而且如果你不想要這種限制,也可以在 tsconfig.json 里關(guān)掉。

有個 allowUmdGlobalAccess 的編譯選項就是控制是否支持在 es module 里使用 UMD 全局類型的:

圖片

默認是 false,開啟以后在 es module 里使用 UMD 全局類型就不報錯了:

圖片

很多庫都需要兼容 esm 和 umd 的使用方式都會這樣用,比如 react:

圖片

所以,如果你開發(fā)的庫需要支持 esm 和 umd 的話,可以用 export namespace as xxx 來導(dǎo)出,會比 declare global 更好。

總結(jié)

現(xiàn)在 TypeScript 的模塊都是 es module 的方式引入的,但有一些包是支持 umd 的,它們可能用各種方式引入模塊,為了實現(xiàn) umd 模塊的類型檢查,可以用 declare global 把導(dǎo)出的變量變?yōu)槿值摹?/p>

但是在 es module 里還是希望使用 import 引入,非 es module 才用全局類型,所以更好的方式是使用 export as namespace xxx。

用這種方式聲明的類型,當(dāng)在非 esm 中使用時,會作為全局類型,而在 esm 中如果直接引用全局類型會報錯,建議用 import 引入。這是它比 declare global 更好的地方。

當(dāng)然,也可以把 allowUmdGlobalAccess 的編譯選項設(shè)置為 true 來放開這種約束。

像 react 這種支持 umd 的庫都是用這種方式導(dǎo)出類型的,如果你也要開發(fā)一個支持 umd 的庫,不妨也試試 export as namespace 吧。

責(zé)任編輯:武曉燕 來源: 神光的編程秘籍
相關(guān)推薦

2022-04-17 10:29:10

TSTypeScript對象類型

2022-01-19 23:41:56

TS索引類型

2022-12-30 08:08:30

2022-05-07 07:33:55

TypeScript條件類型

2022-02-25 14:04:56

TS前端代碼

2022-04-29 06:54:48

TS 映射類型User 類型

2021-07-05 16:10:35

JavaScript代碼前端

2023-06-13 18:24:26

TypeScriptJSDoc開發(fā)

2022-02-12 22:16:53

TypeScript類型字符串

2022-08-14 06:59:01

TS 類型編程索引類型

2022-08-26 10:01:48

Vue3TS

2023-12-01 08:54:50

Java原子類型

2021-08-16 08:45:38

JavaScript開發(fā)代碼

2022-01-14 14:19:38

ReactTS前端

2021-12-25 22:29:31

類型編程Javascript類型體操

2021-06-29 09:01:50

Swift閉包語言

2024-12-30 09:03:09

2022-04-19 21:05:03

JavaScript內(nèi)置工具

2024-08-19 09:07:09

TSvoid類型

2024-02-20 08:56:50

JavaScript模塊打包器
點贊
收藏

51CTO技術(shù)棧公眾號

欧美一区二区三区影院| 国产精品日韩欧美一区二区三区| 欧美三级视频网站| 24小时成人在线视频| 一区二区三区中文字幕| 国产欧美一区二区视频| 天堂免费在线视频| 国产精品大片| 中文字幕欧美视频在线| 人妻精品久久久久中文字幕69| 91破解版在线观看| 国产精品视频一二三区| 国产激情一区二区三区在线观看 | 久久久精品一区| 国产精品扒开腿做爽爽爽a片唱戏| av综合电影网站| 亚洲日本电影在线| 欧美日韩国产精品一区二区| aa视频在线免费观看| 亚洲少妇自拍| 日韩一区二区在线视频| 亚洲av无码一区二区三区网址| 78精品国产综合久久香蕉| 夜夜精品视频一区二区| 欧美资源一区| 欧美 日韩 国产 在线| 久久国内精品视频| 日本a级片电影一区二区| 欧美日韩在线观看免费| 四虎国产精品免费观看| 亚洲精品网址在线观看| 熟女人妻一区二区三区免费看| 国产a亚洲精品| 精品久久久久久久久久| 国产精品jizz在线观看老狼| 国产三级在线| 91一区二区三区在线播放| 亚洲一区中文字幕| 在线观看亚洲国产| 手机精品视频在线观看| 欧美综合第一页| 国产成人精品亚洲男人的天堂| 一本精品一区二区三区| 色狠狠久久aa北条麻妃 | 国产精品久久二区二区| 欧美一区二区视频17c| 亚洲欧美一区二区三| 成人午夜短视频| 懂色av一区二区三区在线播放| 91在线观看喷潮| 免费观看在线色综合| 国产成人精品一区| www.色国产| 性伦欧美刺激片在线观看| 久久久久久美女| 久久国产露脸精品国产| 国产精品v日韩精品v欧美精品网站| 久久精品影视伊人网| 91人妻一区二区三区蜜臀| 99精品在线观看| 日韩在线观看免费| 国产一区二区视频在线观看免费| 久久久久美女| 欧美成人黑人xx视频免费观看| av成人免费网站| 欧美在线亚洲| 久久久久久久电影一区| 亚洲国产成人精品激情在线| 国产精品综合| 国产精品∨欧美精品v日韩精品| 国产真人无遮挡作爱免费视频| 日本91福利区| 成人免费看黄网站| www.爱爱.com| 99久久国产免费看| 日产精品高清视频免费| 麻豆网在线观看| 亚洲精品乱码久久久久久日本蜜臀| 毛片在线视频观看| 97蜜桃久久| 在线观看av一区| 日本高清一区二区视频| 91麻豆精品国产91久久久久推荐资源| 精品国产123| 精品无码在线观看| 99久久精品费精品国产| 久久久免费观看视频| 国产一级淫片a视频免费观看| 久久精品国产免费| 成人欧美一区二区三区视频| 久久天堂电影| 樱花草国产18久久久久| 波多野结衣家庭教师在线播放| 久久久人成影片一区二区三区在哪下载| 精品视频在线免费看| 国产精品果冻传媒| 国产一区毛片| 欧美黑人xxxx| 波多野结衣视频网址| 国产麻豆精品在线| 欧美日韩国产高清视频| av色综合久久天堂av色综合在| 精品久久久久久中文字幕| 国产精品一区二区小说| 国产精品久久久久av蜜臀| 中文字幕精品www乱入免费视频| 久久艹精品视频| 美女视频黄 久久| 国产日韩欧美综合精品| 午夜老司机在线观看| 精品日本高清在线播放| 91欧美视频在线| www.亚洲一二| www.日韩免费| 国产一级淫片a视频免费观看| 国产福利一区二区三区在线视频| 秋霞毛片久久久久久久久| 性欧美videoshd高清| 欧美系列在线观看| 成人免费毛片日本片视频| 91精品国产91久久久久久密臀| 3344国产精品免费看| 国产黄a三级三级看三级| 国产欧美一二三区| 国产91在线视频观看| 日本一区二区三区视频在线看| 中文字幕久久亚洲| 无码人妻一区二区三区线| 成人午夜在线播放| 久久久久久久香蕉| 国产精品亚洲综合在线观看| 中文字幕一区日韩电影| 天天干天天操天天爱| 成人高清伦理免费影院在线观看| 香蕉精品视频在线| 久久精品xxxxx| 亚洲性xxxx| 亚洲不卡视频在线观看| 91一区二区三区在线播放| 欧美一级欧美一级| 国产精品x8x8一区二区| 欧美福利视频在线| 亚洲成熟女性毛茸茸| 亚洲日本中文字幕区| 极品粉嫩美女露脸啪啪| 99久精品视频在线观看视频| 国产精品美女久久久久久免费 | xnxx国产精品| 国产69精品久久久久久久| 99久热这里只有精品视频免费观看| 久久视频这里只有精品| 国产精品久久久久毛片| 亚洲少妇最新在线视频| 91蝌蚪视频在线| 欧美在线视屏| 国产精品免费在线播放| 国产高清视频色在线www| 欧美精品一区二区三区四区 | 高清国语自产拍免费一区二区三区| 黄色网在线免费看| 日韩精品一区二区三区四区| 国产在线观看免费视频今夜| av电影在线观看完整版一区二区| 国产综合av在线| 亚洲免费毛片| 国产精品久久久久久久午夜| 麻豆网站视频在线观看| 日韩一级完整毛片| 国产午夜小视频| 久久精品视频免费观看| 我看黄色一级片| 久久精品影视| 国产精品一区二区三区在线| 中文字幕在线中文字幕在线中三区| 亚洲欧美中文日韩v在线观看| 国产精品第6页| 亚洲人成人一区二区在线观看| 99国产精品免费视频| 亚洲精品裸体| 日韩视频在线观看国产| 国产日韩在线观看视频| 97视频在线观看亚洲| 番号集在线观看| 精品少妇一区二区三区| 黄色片网站在线免费观看| 中文字幕不卡三区| 年下总裁被打光屁股sp| 噜噜噜91成人网| 在线播放 亚洲| 欧美男男freegayvideosroom| 国产97人人超碰caoprom| 亚洲麻豆精品| 精品国产91九色蝌蚪| 国产一级片免费视频| 亚洲激情一二三区| 加勒比综合在线| 国产精品538一区二区在线| 国产黄视频在线| 99欧美视频| 国产欧美丝袜| 亚洲精品69| 日本久久久久久久| 国产理论电影在线| 中文字幕综合一区| 无码国产精品高潮久久99| 欧美人牲a欧美精品| 国产三级av片| 亚洲精品国产第一综合99久久 | 5566成人精品视频免费| 日本蜜桃在线观看| 亚洲欧美一区二区激情| 成人激情四射网| 欧美日韩一区视频| 午夜精品一区二| 亚洲电影在线播放| 亚洲AV成人无码精电影在线| 91在线视频免费观看| 亚洲区 欧美区| 日本视频在线一区| 国产97在线 | 亚洲| 一区二区三区毛片免费| 视频一区视频二区视频三区视频四区国产| h视频久久久| 国产在线精品自拍| 国产v综合v| 欧美在线性爱视频| 2021中文字幕在线| 欧美激情第99页| 久久久久亚洲AV成人无码国产| 性欧美xxxx大乳国产app| 麻豆映画在线观看| 四季av在线一区二区三区| 日本一区二区三区免费看| 久久porn| 高清不卡日本v二区在线| 国产精品国产三级在线观看| 国产美女久久久| 99re66热这里只有精品4| 欧美中文字幕在线| 欧美激情20| 91精品国产高清久久久久久91| 欧美人与动牲性行为| 久久国产精品久久久久久| 欧美成人三区| 久久五月情影视| 成人看片在线| 亚洲播播91| 91成人天堂久久成人| 黄色在线观看www| 91精品国产高清久久久久久| 麻豆理论在线观看| 97精品国产97久久久久久| av电影院在线看| 午夜精品一区二区三区在线 | 亚洲国产成人一区二区| 欧美一区二区三区喷汁尤物| 国产农村老头老太视频| 欧美一级欧美三级| 性网爆门事件集合av| 欧美大胆人体bbbb| 男人天堂网在线视频| 亚洲国产精品成人va在线观看| 人人妻人人澡人人爽人人欧美一区| 亚洲精品一区二区三区99| 神马久久久久| 亚洲午夜未满十八勿入免费观看全集| 国产高清免费av在线| 日韩在线视频一区| 成人av黄色| 久久久久五月天| 亚洲深夜视频| 国产欧美 在线欧美| 精品中文字幕一区二区三区四区| 国产99在线免费| 亚洲肉体裸体xxxx137| 午夜久久资源| 午夜精品av| 很污的网站在线观看| 久久最新视频| 天堂av.com| 91小视频在线免费看| 欧美巨胸大乳hitomi| 一区二区在线观看不卡| 免费观看一区二区三区毛片| 欧美性xxxxxxxx| 丰满少妇被猛烈进入| 亚洲天堂免费在线| 菠萝菠萝蜜在线观看| 77777亚洲午夜久久多人| 国模套图日韩精品一区二区| 成人av在线亚洲| 天天操综合520| 一区二区高清视频| 一区二区日韩免费看| 亚洲另类第一页| 99re视频精品| 亚洲精品卡一卡二| 欧美日韩国产区| 中文字幕第三页| 欧美精品一区二区三区在线| 午夜视频在线观看网站| 4438全国成人免费| 香蕉免费一区二区三区在线观看| 欧美亚洲另类久久综合| 国产精品二区影院| 欧美成人福利在线观看| 91麻豆精品一区二区三区| 欧美久久久久久久久久久久| 欧美无砖专区一中文字| 污污视频在线观看网站| 久久精品电影网站| 亚洲综合在线电影| 精品欧美日韩在线| 欧美黄在线观看| 天天视频天天爽| 久久一留热品黄| 中文在线观看免费网站| 日韩三级视频在线观看| 91吃瓜网在线观看| 欧美做爰性生交视频| 超碰97成人| 亚洲国产一二三精品无码 | 国产精品电影网| 日韩三级视频| 蜜臀av无码一区二区三区| 国产精品中文欧美| 天天色影综合网| 欧美私模裸体表演在线观看| 精品视频二区| 亲子乱一区二区三区电影 | 久久99国产精品久久99果冻传媒| 欧美做受高潮6| 色综合久久综合网欧美综合网| 日韩在线视频第一页| 欧美国产日韩一区二区| 精品视频在线播放一区二区三区 | 亚洲国产专区| 男人的天堂免费| 亚洲精品精品亚洲| 国产特黄一级片| 久久成人免费视频| 国产一区二区高清在线| 国产免费xxx| 国产一区二区福利| 欧美三级小视频| 欧美va亚洲va| 国产蜜臀在线| 精品无人乱码一区二区三区的优势| 日韩午夜电影| av在线网站观看| 色婷婷综合激情| 成人资源www网在线最新版| 国产精品久久久久久一区二区 | 精品精品国产国产自在线| 日本成人在线网站| 亚洲第一页在线视频| 国产原创一区二区| 九九久久免费视频| 日韩电影中文字幕av| 亚洲黄色中文字幕| 亚洲福利av| 国产曰批免费观看久久久| 欧美日韩偷拍视频| 亚洲黄色www| 精品亚洲美女网站| 亚洲午夜精品一区二区三区| 黑人精品欧美一区二区蜜桃 | 欧美+日本+国产+在线a∨观看| 成人高清在线观看视频| 亚洲国产美国国产综合一区二区| 隣の若妻さん波多野结衣| 欧美一级视频免费在线观看| 国产精品一区二区99| 欧美精品久久久久久久久25p| 亚洲久本草在线中文字幕| 嫩草影院一区二区| 国产精品久久久久免费a∨大胸 | 26uuu欧美| 在线观看免费视频一区| 九九热视频这里只有精品| 私拍精品福利视频在线一区| 网站一区二区三区| 亚洲一卡二卡三卡四卡| 成人亚洲综合天堂| 99在线观看| 日韩在线一二三区| 欧美黄色aaa| 日韩电影中文字幕在线| 久久精品黄色| 欧美啪啪免费视频| ㊣最新国产の精品bt伙计久久| 三级网站免费观看| 国产精品亚洲精品| 亚洲精品韩国| 26uuu成人网| 亚洲一级片在线看| 精品三级在线观看视频| 欧美日韩中文不卡| 黑人精品xxx一区一二区| 成人无遮挡免费网站视频在线观看|