Объявления 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 модуль создан и не должен, потому что он не существует в библиотеке. Как я могу улучшить этот кусок кода?