【发布时间】:2018-12-22 01:16:34
【问题描述】:
我正在尝试为已经存在的库编写打字稿定义文件。这个库 (react-filepond) 导出了一个名为 File 的对象(可以在 usage example in the README 中看到)。
问题在于这个库创建的另一个接口使用了JS File interface。
所以现在在我的打字稿定义文件中,我必须以某种方式管理File 类型的两个定义。我对此的解决方案是在我的定义文件中将库创建的对象声明为不同的名称,然后简单地将其导出为“文件”。
declare class FilePondFile extends React.Component<FilePondFileProps> { }
export { FilePondFile as File };
当我在自己的项目中使用该类型时,这看起来很好而且很漂亮。但作为 OSS 的支持者,我想通过Definitely Typed repo 将这个定义提供给社区。p>
他们的 linter 给了我一个错误,尽管这显然阻止了 my PR 被审查:
Error: C:/dev/DefinitelyTyped/types/react-filepond/index.d.ts:22:1
ERROR: 22:1 strict-export-declare-modifiers 'declare' keyword is redundant here.
See: https://github.com/Microsoft/dtslint/blob/master/docs/strict-export-declare-modifiers.md
乍一看,删除class FilePondFile前面的declare似乎很简单,但是,如果我删除它,我会得到一个不同的错误:
A 'declare' modifier is required for a top level declaration in a .d.ts file.
所以我不确定如何处理这种矛盾。绝对类型的维护者似乎没有时间提供帮助,因为我的 PR 刚刚被标记为“需要作者注意”,尽管我明确提出了这个问题。
有没有人建议我可以做些什么来避免在此定义文件中重复对 File 的引用,同时还传递绝对类型化 linter?
【问题讨论】:
-
当前的 dtslint 规则似乎不可能实现您想要实现的目标,您可以尝试在 dtslint repo 中提出问题
-
好主意,谢谢!我已经这样做了here。
标签: typescript definitelytyped