تایپاسکریپت ادغام نامفضاها از فایلهای متعدد را انجام نمیدهد
من انواع را با typings وارد کردهام و نیاز دارم که برخی از آنها را با تعریفهای متد اضافی توسعه دهم. به عنوان مثال، من این فایل را برای Mocha دارم:
// /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;
}
}
این خود در custom-additions به من خطا میدهد:
custom-additions/index.d.ts(420,65): خطا TS2694: فضای نام '".../custom-additions/index".Mocha' عضوی صادر شده به نام 'ITest' ندارد.
و همچنین یک خطا هنگام تلاش برای ارجاع به متد اضافه شده timeout():
tests/runner.ts(65,31): خطا TS2339: ویژگی 'timeout' در نوع 'ITest' وجود ندارد.
در بالای custom-additions من سعی کردهام هر یک از موارد زیر را اضافه کنم:
/// <reference types="Mocha" />
import 'mocha';
import * as Mocha from 'mocha';
با عدم حل خطای اول.
داخل کد فراخوانی، من تلاش کردهام که Mocha را هم از طریق وارد کردن
import Mocha = require('mocha');
و
import * as Mocha from 'mocha';
من همچنین اضافه کردهام
import 'custom-additions';
بدون موفقیت.
من قدردان راهنماییها در مورد اینکه چه اشتباهی در تلاش برای ادغام این فضای نامها انجام میدهم، هستم. این تنها یک نمونه است--من مشکلات تقریباً مشابهی با دهها تعریف نوع دیگر دارم. بیشتر افزونههای سفارشی شامل شخصیسازیهای واقعی هستند، برخی دیگر اصلاحات نوع مانند موارد بالا هستند.