当前位置:首页 > 其他 > 正文内容

UMD库(js库)撰写d.ts声明文件注意事项

葱子5年前 (2021-02-22)其他4140

在typescript中使用js库时,为了更友好的代码提示,需要为js库撰写d.ts声明文件。

一般来说js库大致可以分为3类:全局库、模块化库、UMD库。

这里重点记录一下UMD库的d.ts撰写注意事项。

识别UMD库

UMD模块是指那些既可以作为模块使用(通过导入)又可以作为全局(在没有模块加载器的环境里)使用的模块。 许多流行的库,比如 Moment.js,就是这样的形式。

UMD模块会检查是否存在模块加载器环境。 这是非常容易观察到的模块,它们会像下面这样:

(function (root, factory) { if (typeof define === "function" && define.amd) { define(["libName"], factory); } else if (typeof module === "object" && module.exports) { module.exports = factory(require("libName")); } else { root.returnExports = factory(root.libName); } }(this, function (b) {

如果你在库的源码里看到了typeof define,typeof window,或typeof module这样的代码,尤其是在文件的顶端,那么它几乎就是一个UMD库。

UMD库的d.ts声明文件注意事项:

  • 格式要求
    UMD库的d.ts声明文件需要满足以下格式,在VS code中和编译后才不会报错。
    declare namespace XXX{ }; export as namespace XXX; export=XXX;

  • 引入js库方式:
    import XXX=require("./xxx.js);

扫描二维码推送至手机访问。

版权声明:本文由葱子博客发布,如需转载请注明出处。

本文链接:https://www.aitiancheng.com/article-1579.html

相关文章

cocos creator/layaair/egret引入第三方js库教程

cocos creator/layaair/egret引入第三方js库教程

最近在研究cocos/laya/egret这三款小游戏开发引擎,涉及到引入第三方库的问题,这里做下记录。 cocos creator: 版本要求:2.x引入方式:在cocos creator选中要导入的js文件,勾选导入为插件点击应用即...

四川移动M301A机顶盒二级密码分享

四川移动M301A机顶盒二级密码分享

之前有写过移动机顶盒M301A投屏的教程,后台看到有很多人也在搜索移动机顶盒二级密码的问题。刚好之前在鼓捣家里的这款M301A的时候搜索到了相关的密码。 在这里为大家分享一下: 1、进入设置: M...

win10下快速访问华为荣耀路由器的USB移动硬盘

win10下快速访问华为荣耀路由器的USB移动硬盘

去年买荣耀笔记本送了一款荣耀路由器,型号是ws831,在路由器上刚好带了一个USB接口。之前一直没有时间来试试这个功能,最近想起来测试一下。 在测试过程中,发现在win10下访问荣耀路由器的USB移动硬盘有些问题。通过在华为花粉论坛...

从事互联网工作多年的管理者,现在创业做文玩靠谱吗?

从事互联网工作多年的管理者,现在创业做文玩靠谱吗?

在互联网行业做技术产品负责人近7年,在这个行业10多年,现在月薪税后3W,但是感觉已经到瓶颈期了,挺喜欢文玩的,菩提,星月,玉石,琥珀什么的,春节期间跟哥商量过,能不能自己开个店,自己做老板,也跟北京的朋友商量过,基本没有支持的,自己也觉得...

我的2016书单

心理学-行为学:《怪诞行为学》 互联网运营:《增长黑客》 职场:《不会汇报工作,还敢混职场》 市场营销:《定位》、《影响力》...

wordpress转zblog避坑指南_附详细教程

wordpress转zblog避坑指南_附详细教程

这段时间在家闲着无聊,就想着把葱子博客从wordpress转为zblog,从wordpress转zblog的原因主要是我不太习惯国外软件的操作方式,用着不是太习惯。 下面就是详细的wordpress转zblog教程:...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。