我正在将一个JavaScript项目移植到TypeScript中。但是,我很难找到一个良好的模块化设计模式。
我的库提供核心/最小功能。举个例子,假设它将浏览器规范作为对象返回:
{
browser:"chrome",
version:"15.0.3",
platform:"windows",
screen-width:"1200",
// .. etc
}
此库将通过NPM安装。但是为了充分利用库,用户必须安装处理上述对象的“模块”才能产生不同的结果。
例如,一个模块将提供此版本浏览器不支持的CSS功能。
{
unsupportedFeatures:[
"a",
"b",
"c",
// ... etc
]
}
另一个模块将获取核心库结果和上述模块结果并处理DOM以查看是否存在任何不受支持的CSS定义。
{
notWorking:[
"a",
"b",
// ... etc
]
}
注意:这不是库的实际功能,它只是一个例子来说明模块如何依赖核心库结果和彼此的结果。
我尝试将核心库定义为函数,然后将模块添加为原型。
这样做的一个问题是核心库和添加的原型函数都没有类型定义。
我也尝试将核心库定义为一个类,但这也没有用,现在编译错误。
我也尝试过合并命名空间接口声明,但它会导致其他编译错误。
此时,我没有想法,以上所有解决方案都是有效的JavaScript,但在TypeScript中并不起作用。
如何在TypeScript中解决此问题?我认为用这种方式编写模块化/可扩展的库是很常见的,那么它应该遵循什么样的理想设计模式呢?鉴于它为核心库,模块作者和用户提供了类型安全和自动完成。
答案 0 :(得分:0)
我已将您的游乐场代码更改为我可能使用的内容:
findOne