Как создать вложенный файл d.ts? - PullRequest
0 голосов
/ 25 октября 2018

Я строю модуль, который можно использовать как в JS, так и в TS.Насколько я знаю, при создании модуля в JS создайте отдельный файл d.ts. (Конечно, можно сделать с помощью TS и скомпилировать в JS).В любом случае я решил сделать d.ts файл.

Например.

// common.d.ts

declare namespace common {
  export const method: string => string;
}
export = common;

Далее

// utils.d.ts
import * as u from './common';
declare namespace utils {
  export const common: u // Causing an error.
}
export = utils;

И я получил эту ошибку: The namespace 'u' can not be used as a format. Я хочучтобы написать это для унификации адресов импорта.

import { common as u } from '/utils';
u.method('Any params');

Я думаю, может быть, я смогу получить объявления из файла t.ds и назначить их.Но я не знаю как.Кто-нибудь, помогите мне!

1 Ответ

0 голосов
/ 26 октября 2018

Замена export const common: u на export const common = u устранит ошибку, но скопирует только значение, означающее u;интерфейсы и псевдонимы типов, определенные в common.d.ts, не будут доступны через эту константу common.export import common = u лучше: он копирует все значения.Но большинство людей сочли бы еще лучше удалить бессмысленную комбинацию пространства имен и назначения экспорта и переместить отдельные экспорты из пространства имен на верхний уровень модуля;тогда вы можете использовать синтаксис ECMAScript export as вместо псевдонима TypeScript.

// common.d.ts
export const method: string => string;

// utils.d.ts
import * as u from './common';
export { u as common };
...