我正在用打字稿编写库,必须保留一些api
_(1).seconds()
问题是_是一个模块,而在之前的实现中就像那样
module.exports = valueFunction;
module.exports.seconds = seconds;
是否可以在打字稿中实现相同的内容?
答案 0 :(得分:1)
这是考虑分解它并使代码完成/智能感知工作的一种方法。有一些选项可以更接近原始的JavaScript实现,但是,使代码完成工作可能有点挑战性。
导出主要功能_
,并返回名为Chained
的导出类。它位于此class
中,其中存在从_
的返回值挂起的函数。
在实施文件中( sample.ts
):
export class Chained {
constructor(private val: number) {
}
seconds(): number {
return this.val / 1000;
}
}
export function _(val: number): Chained {
return new Chained(val);
}
然后使用:
/// <reference path="sample.ts" />
import sample = require('./sample');
// create a simple alias for the exported _ function:
import _ = sample._;
var val = _(5000).seconds();
console.log(val);
输出为5
,seconds
将原始数字除以1000
。
如果你需要这个功能,如:
_.seconds
以及:
_().seconds()
您的选项变得更加有限,因为TypeScript支持使用属性扩展Function
实例,而intellisense不起作用:
// this won't work well:
export function _(val:number) : Chained {
return new Chained(val);
}
_["seconds"] = (val:number) : number => {
return val / 1000;
}