我一直试图为Mocha的Typescript定义做一些补充。 Mocha的Runner
继承自NodeJS EventEmitter
。在我的.d.ts
文件中,我通过添加:
/// <reference types="node" />
并声明类型:
interface IRunner extends NodeJS.EventEmitter
这符合我的目的,但是在我合并原始PR之后,它被撤消了,因为引用Node这样的类型会导致设置一些全局变量(在这种情况下为setTimeout
),这导致与其他项目发生冲突。
被更改破坏的项目是pjax-api
,重新执行的步骤是:
git clone https://github.com/falsandtru/pjax-api
npm install
/// <reference types="node" />
的任何输入(示例:@types/asynciterator
,@types/couchbase
,@types/mocha@2.2.45
);或import * as events from 'events';
(例如@ types / artillery)npx tsc --noEmit -p tsconfig.json
结果:
node_modules/spica/throttle.ts(7,5): error TS2322: Type 'Timer' is not assignable to type 'number'.
node_modules/spica/throttle.ts(28,5): error TS2322: Type 'Timer' is not assignable to type 'number'.
是否有办法在.d.ts
文件中引用另一个.d.ts
文件中的某个类型,而不会将所有其他内容纳入范围内。我想要?
而且,作为一个后续问题,这是否会使其他示例打字与原始更改一样破碎?
我设法以两种方式解决这个问题,既不完全令人满意:
IRunner
延伸EventEmitter
- 所以我觉得我应该能够在打字中表达这一点。任何指导赞赏!