Объявления Typescript - объявления распространяются на множество файлов для одной библиотеки

Я хочу создать файл декларации для библиотеки, из которой я мог бы импортировать функцию, которая в свою очередь возвращает объект с конструкторами, например:

import x = require("x");
let lib = x(/**options**/);
let a = new x.someClassA();

lib будет что-то вроде:

{
     someClassA: someClassA,
     someClassB: someClassB,
     // and so on...
}

Поэтому я хотел создать файлы декларации примерно так:

// someClassA.d.ts
declare module xAll {
    export class someClassA {}
}

// someClassB.d.ts
declare module xAll {
    export class someClassB {
        a: someClassA;
    }
}

// index.d.ts
/// <reference path="someClassA.d.ts"/>
/// <reference path="someClassb.d.ts"/>
export as namespace x;
export = create;

declare function create(): create.all;
declare namespace create {
    export interface all {
        someClassA: xAll.someClassA,
        someClassB: xAll.someClassB
    }
}

К сожалению в index.d.ts Typescript не распознает модуль xAll.
Я также хотел объявить одно пространство имен для нескольких файлов, но это также не представляется возможным.

У меня вопрос, как мне создать файлы декларации для библиотеки, как это - я хочу избежать ситуации, в которой я буду помещать все в один файл.

Я только что понял, что Typescript принимает что-то вроде этого:

// index.d.ts
/// <reference path="someClassA.d.ts"/>
/// <reference path="someClassb.d.ts"/>
export as namespace x;
export = create;

declare function create(): create.all;

import * as xAll from "xAll";
declare namespace create {
    export interface all {
        someClassA: xAll.someClassA,
        someClassB: xAll.someClassB
    }
}

И теперь он работает, тем не менее, я xAll модуль создан и не должен, потому что он не существует в библиотеке. Как я могу улучшить этот кусок кода?

0 ответов

Другие вопросы по тегам