Интерфейс разделения TypeScript из класса + пространство имен - PullRequest
0 голосов
/ 14 октября 2018

В TypeScript у меня есть класс, объединенный с пространством имен (foo.ts):

export class C {
  foo(): Foo { ... }
}
export namespace C {
  type Foo = ...
  ...
}

При подготовке к использованию inversify я хочу поместить интерфейс для этого класса в другой файл.Я пробовал что-то вроде этого:

(interfaces.ts)

export interface IC {
  foo (): C.Foo
  ...
}
export namespace C {
  type Foo = ...
}

(foo.ts)

import { C, IC } from './interfaces'

export class C {
  foo (): Foo { ... }
}

Однако компиляция foo.ts выдает мне ошибку: «Отдельные декларации в объединенной декларации« C »должны быть все экспортированы или все локальные».Я предполагаю, что это означает, что я импортировал пространство имен, но я не экспортировал его (хотя я ожидаю, что экспорт класса должен экспортировать объединенную сущность).Как я могу обойти эту проблему?

1 Ответ

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

Ага - написание моего вопроса привело меня к ответу.foo.ts можно изменить на:

import { C, IC } from './interfaces'

class C {
  foo (): Foo { ... }
}

export { C }

Кажется странным, что требуется отдельный экспорт, но приятно знать, что он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...