Please enable JavaScript.
Coggle requires JavaScript to display documents.
声明文件 - Coggle Diagram
声明文件
模板
global-modifying-module.d.ts
global-plugin.d.ts
global.d.ts
module-class.d.ts
module-function.d.ts
module-plugin.d.ts
module.d.ts
规范
回调函数类型
回调函数返回值类型
不要为返回值被忽略的回调函数设置一个any类型的返回值类型
应该给返回值被忽略的回调函数设置void类型
回调函数里的可选参数
不要在回调函数里使用可选参数除非你真的要这么做
重载与回调函数
不要因为回调函数参数个数不同而写不同的重载,应该只使用最大参数个数写一个重载
函数重载
顺序
使用可选参数
不要用Number,String,Boolean和Object这几张类型,在js中几乎没有正确用过。
使用联合类型
结构
模块化库
从代码上识别模块化库
例子
UMD
UMD模块是指那些既可以作为模块使用(通过导入)又可以作为全局(在没有模块加载器的环境里)使用的模块。
如果你在库的源码里看到了typeof define,typeof window,或typeof module这样的测试,尤其是在文件的顶端,那么它几乎就是一个UMD库。
模块插件或UMD插件
全局插件
使用依赖
依赖全局库
依赖模块
依赖UMD库
从全局库
如果你的全局库依赖于某个UMD模块,使用/// <reference types指令:
从一个模块或UMD库
补充说明
防止命名冲突
ES6模块插件的影响
ES6模块调用签名的影响
全局库
全局库是指能在全局命名空间下访问的(例如:不需要使用任何形式的import)。 许多库都是简单的暴露出一个或多个全局变量。
举例
api最佳实践
深入
构建umd库
核心概念
类型
类型别名声明(type sn = number | string;)
接口声明(interface I { x: number[]; })
类声明(class C { })
枚举声明(enum E { A, B, C })
指向某个类型的import声明
值
let,const,和var声明
包含值的namespace或module声明
enum声明
class声明
指向值的import声明
function声明
命名空间
简单的组合:一个名字,多种意义
内置组合
用户组合
高级组合
利用interface添加
使用namespace添加
发布