我们正在将我们的一些 javascript 转换为打字稿。我们已经将一些现有功能提取到另一个由我们维护的 javascript 库中,例如:
Framework.utils = {
utilFnOne: function ()...,
utilFnTwo: function ()...,
utilFnThree: function ()...,
}
我们还有一些在非框架代码中使用的实用程序,如下所示:
Current.utils = Framework.utils; // Extend the framework's utils
Current.utils.utilFnFour = function()...;
Current.utils.utilFnFive = function()...;
打字稿
我们可以为框架库创建定义,如下所示:
declare module Framework.utils {
export function utilFnOne();
export function utilFnTwo();
export function utilFnThree();
}
我们可以通过执行以下操作为 Current.utils 创建一个打字稿定义:
module Current.utils {
export function utilFnFour() {}
export function utilFnFive() {}
export class StringUtils { }
}
如果我们能做这样的事情就好了:
module Current.utils extends Framework.utils { .... }
所以当我们这样做时,智能感知会显示来自 Framework 和 Current 的成员
Current.utils.
编辑 - 分辨率
我接受了 Ryan 的想法并稍作修改
框架.d.ts
declare module Framework {
export var util: _utilImpl;
export class _utilImpl {
utilFnOne(a: string) : string;
}
}
当前.ts
module Current {
export var util = new _utilImpl();
export class _utilImpl extends Framework._utilImpl {
utilFnTwo(b: number) : number;
}
}