类库编写
declare 为外部变量提供类型声明
全局类库
源代码
function globalLib(options) {
console.log(options);
}
globalLib.version = '1.0.0';
globalLib.doSomething = function() {
console.log('globalLib do something');
};
声明
declare function globalLib(options: globalLib.Options): void;
declare namespace globalLib {
const version: string;
function doSomething(): void;
interface Options {
[key: string]: any
}
}
module 类库
源码
const version = '1.0.0';
function doSomething() {
console.log('moduleLib do something');
}
function moduleLib(options) {
console.log(options);
}
moduleLib.version = version;
moduleLib.doSomething = doSomething;
module.exports = moduleLib;
声明
declare function moduleLib(options: Options): void
interface Options {
[key: string]: any
}
declare namespace moduleLib {
const version: string
function doSomething(): void
}
export = moduleLib
umd库
源码
(function (root, factory) {
if (typeof define === "function" && define.amd) {
define(factory);
} else if (typeof module === "object" && module.exports) {
module.exports = factory();
} else {
root.umdLib = factory();
}
}(this, function() {
return {
version: '1.0.0',
doSomething() {
console.log('umdLib do something');
}
}
}));
声明
declare namespace umdLib {
const version: string
function doSomething(): void
}
export as namespace umdLib
export = umdLib
声明自定义方法
// 模块插件
import m from 'moment';
declare module 'moment' {
export function myFunction(): void;
}
m.myFunction = () => {}
// 全局插件
declare global {
namespace globalLib {
function doAnyting(): void
}
}
globalLib.doAnyting = () => {}