【问题标题】:How to write typescript definitions for library `enhanced-resolve`?如何为库`enhanced-resolve`编写打字稿定义?
【发布时间】:2017-03-17 19:56:52
【问题描述】:

我正在努力调整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。我不知道如何完成的唯一工作是导出的东西。由于导出代码应使用Export assignments 以与 webpack 兼容。

我只是想知道是否有解决方案? 或者我应该更改库的导出签名?

【问题讨论】:

  • 如果 tsifying,你的意思是你做的最多的是什么?,你是否为库中的每个函数分配了类型?
  • @NahushFarkande most 表示只有入口模块还没有完成。顺便说一句,这些功能的类型可以很容易地完成。这不是主题。
  • 如果您为库中的函数分配类型,然后在您的tsconfig.json 中将declaration 标志设置为true 来编译代码,typescript 将为您生成声明文件
  • 我知道那件事,但即使是编译器也不知道如何正确生成文件。你可以下载the repo试试看。

标签: typescript webpack typescript-typings


【解决方案1】:

作为一般经验法则(如果您想要 es6/7/2016/谁知道他们现在怎么称呼它,这主要是正确的):

1。进口

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

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脚本,因此值得逐渐将类型添加到您的参数、字段等中。不幸的是,我对此无能为力,因为我不知道您的代码的作用。如果它使用框架或者是框架的插件,那么它们是否有自己的打字稿定义总是值得一看的,你可以自己使用。

【讨论】:

  • 还是谢谢你。但我担心你的答案不是我需要的解决方案。您可以从我更新的问题中查看更多详细信息!
  • 目前还不清楚问题出在哪里,如果您在导出方面遇到问题,请参阅我回答的第 2 点。这将生成与您当前拥有的等效的 module.exports 并启用类型安全导入
  • 哦,对不起,我现在明白了,你有一个 module.exports 函数,并且你正在将其他函数附加到函数对象。这确实很有趣。我可以编辑你的问题吗?一堆其他出口/进口只是杂乱无章,很难发现问题......
  • 我知道源代码示例是模糊的。但这就是为什么很难编写定义。它具有多级“子导出”(如嵌套命名空间)。
  • 如果它只是导出对象,你可以很容易地重构它,但我不认为export 关键字可以做你想要的......
猜你喜欢
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 2018-06-26
  • 2019-12-25
  • 1970-01-01
  • 2014-07-24
相关资源
最近更新 更多