2017-06-19 83 views
2

我已经用typings导入了类型,并且需要使用其他方法定义来扩展其中的一些。例如,我有这个文件MochaTypeScript不合并来自多个文件的名称空间

// /typings/globals/mocha/index.d.ts 

declare namespace Mocha { 

    interface IRunnable { 
     title: string; 
     fn: Function; 
     async: boolean; 
     sync: boolean; 
     timedOut: boolean; 
    } 

    interface ITest extends IRunnable { 
     parent: ISuite; 
     pending: boolean; 
     state: 'failed'|'passed'|undefined; 

     fullTitle(): string; 
    } 
} 

我需要添加到IRunnable一种方法和重载ITestDefinition。在这种情况下,键入是错误的 - 该方法存在但不在类型声明中。所以我尝试添加一个单独的文件

// /typings/global/custom-additions/index.d.ts 

declare namespace Mocha { 

    interface IRunnable { 
     timeout(value:boolean):void; 
    } 

    interface ITestDefinition { 
     (expectation: string, callback?:() => void): Mocha.ITest; 
    } 
} 

这让我在自定义添加自己的错误:

自定义添加/ index.d.ts(420,65):错误TS2694:命名空间'“.../custom-additions/index”.Mocha'没有导出成员'ITest'。

而且还尝试参照所添加的timeout()方法时的误差:

测试/ runner.ts(65,31):错误TS2339:属性 '超时' 上不存在类型“ITEST ”。

截至custom-additions顶部我试过新增以下的:

/// <reference types="Mocha" /> 

    import 'mocha'; 

    import * as Mocha from 'mocha'; 

由于没有解决的第一个错误。

在调用的代码我已经试过进口摩卡都通过

import Mocha = require('mocha'); 

import * as Mocha from 'mocha'; 

我还添加了

import 'custom-additions'; 

没有成功。

我很感激我在做错误的尝试合并这些命名空间的指针。这只是一个例子 - 我有几乎相同的问题与十几个其他类型的定义。大多数自定义添加都涉及实际的自定义设置,其他自定义添加类型如上所述。

回答

0

,你可以增加mocha作为一个模块:

declare module "mocha" { 
    interface IRunnable { 
     timeout(value:boolean):void; 
    } 
} 

详情请参阅this comment

+0

这并没有解决任何错误。我尝试'完全按照说明声明模块“mocha”,以及'声明模块“Mocha”'这将匹配原始类型的情况。我也回顾了似乎与全球型增强有关的评论链接,这不适用于引用的摩卡类型。谢谢你的建议。 –

+0

@SamuelNeff:有趣。任何你仍在使用'typings'工具的理由?我通过'npm i --save-dev @ types/mocha'和扩充工程安装了这些类型。 – Saravana

+0

没有特别的原因,'typings'完全被npm @types所取代了吗?我不确定。除了他们放置文件的位置以外,它们的实现方式是否不同?谢谢! –

相关问题