如何为库`enhanced-resolve`编写打字稿定义?

时间:2016-11-04 03:44:32

标签: typescript webpack typescript-typings

我正在致力于enhanced-resolve

The new one

我完成了大部分工作。

然而, enhanced-resolve 的结构有点过时了。编写the entry module的定义很难。

如何将以下样式的代码转换为打字稿定义(删除不相关的代码)?

// here is on key point, export assignment
module.exports = function resolve(context, path, request, callback) {
};

module.exports.sync = function resolveSync(context, path, request){
};

// here is another key point, nested export on a function
module.exports.loader = function resolveLoader(context, path, request, callback) {
};

module.exports.loader.sync = function resolveLoaderSync(context, path, request) {
};

PS:2016-11-5

请参阅partly transformed code。我不知道如何完成的 Only 工作是出口事项。由于导出代码应使用Export assignments来实现与webpack的兼容性。

我只是想知道是否存在解决方案? 或者我应该更改图书馆的出口签名?

1 个答案:

答案 0 :(得分:0)

作为一般经验法则(如果你想要es6 / 7/2016 / /谁知道他们现在称之为什么,这几乎是正确的):

1。进口

虽然require与typescript完美配合,但没有关于返回类型的信息。因此值得使用import s

import * as ResolverFactory from "./ResolverFactory"
import { Stuff, OtherStuff } from "./ResolverFactory"

2。出口

这只是一个更好的语法:

export function resolve(context, path, request, callback) {
  //...
}

export const resolve = (context, path, request, callback) => {
  //...
}

3。输入信息

由于您正在使用 Type 脚本,因此值得逐渐向您的参数,字段等添加类型。不幸的是我无法解决这个问题,因为我没有关于代码功能的上下文。如果它使用框架或是框架的插件,那么总是值得看看它们是否有自己的打字稿定义,您可以自己使用。