我已經用typings
導入了類型,並且需要使用其他方法定義來擴展其中的一些。例如,我有這個文件Mocha
:TypeScript不合並來自多個文件的名稱空間
// /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';
沒有成功。
我很感激我在做錯誤的嘗試合併這些命名空間的指針。這只是一個例子 - 我有幾乎相同的問題與十幾個其他類型的定義。大多數自定義添加都涉及實際的自定義設置,其他自定義添加類型如上所述。
這並沒有解決任何錯誤。我嘗試'完全按照說明聲明模塊「mocha」,以及'聲明模塊「Mocha」'這將匹配原始類型的情況。我也回顧了似乎與全球型增強有關的評論鏈接,這不適用於引用的摩卡類型。謝謝你的建議。 –
@SamuelNeff:有趣。任何你仍在使用'typings'工具的理由?我通過'npm i --save-dev @ types/mocha'和擴充工程安裝了這些類型。 – Saravana
沒有特別的原因,'typings'完全被npm @types所取代了嗎?我不確定。除了他們放置文件的位置以外,它們的實現方式是否不同?謝謝! –