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

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

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

在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

相关文章

四川移动光猫改桥接,不影响IPTV使用

四川移动光猫改桥接,不影响IPTV使用

在安装移动宽带的时候,安装师傅默认就在光猫上进行了拨号。这样移动光猫不仅负责光电转换,还要负责路由器、IPTV、wifi这些功能。在使用移动宽带的过程中,某些时候总是莫名的出现断流的情况。所以给家里换了个小米的ax6路由器,使用下来整体性能...

现在有什么好一点的古玩app或者网站吗?最好内容丰富点的。

现在有什么好一点的古玩app或者网站吗?最好内容丰富点的。

黄锐,顶尖收藏网站长(http://www.guwanlife.com) 我最近也一直在做古玩相关的APP,是PC社区论坛的移动版本,叫做古玩人生(古玩人生-第一家专注古玩兴趣交友的网站)...

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

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

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

实用教程:如何通过手机照片获取拍照时的定位位置信息

实用教程:如何通过手机照片获取拍照时的定位位置信息

现在很多的智能手机自带的相机程序都可以记录下拍照位置,在QQ、微信上使用原图进行发送时,会保留这些信息,如果不是使用原图的形式发送,这些信息就会丢失。 下面简单的给大家讲解一下如何查看图片的位置信息。 现在有了更简便快捷的方式:1、在微...

外卖CPS小程序被封后续,我所了解的一些套路

外卖CPS小程序被封后续,我所了解的一些套路

昨天的文章外卖CPS小程序被封,我的一些感想里面写了哪些类型的小程序容易被封号,今天继续展开讲一下,我所了解的一些套路。 1、微信会主动封小程序吗 对于大多数用户规模较小的小程序来讲,可能你提供的某些功能或服务并不符合微信的规则,但从我...

移动魔百盒(M301A)投屏设置技巧

家里装的四川移动宽带,送了一个移动的魔百盒机顶盒,这个盒子比较特殊,有非常多的限制:  1、只能连接到光猫的2/4lan口,接到其他接口(包括路由器的lan口)都会提示“公网接入控制”,完全用不了。 ...

发表评论

访客

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