2017-06-19 31 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所取代了嗎?我不確定。除了他們放置文件的位置以外,它們的實現方式是否不同?謝謝! –

相關問題