Определения типов TypeScript, импортированные в несколько файлов, ломают приложение - PullRequest
0 голосов
/ 01 октября 2019

У меня проблема с использованием файла определений типов в других файлах.

У меня следующая структура папок:

|_ foo
| |_ service.ts
| |_ schema.ts
| |_ index.ts 
|
|_ types.d.ts
|_ index.ts

Вот мой types.d.ts:

export enum EBar {
  a = 'a',
  b = 'b'
}

export interface IBaz {
  id: number,
  title: string
}

export interface IData {
  bar: EBar;
  baz: IBaz[];
}

Внутри service.ts Я использую типы:

import { EBar, IBaz, IData } from '../types';

// ...functions and methods that utilize these types...

Также внутри schema.ts Я использую типы:

import Joi from '@hapi/joi';

import { EBar } from '../types';

const BAR_A = EBar.a;
const BAR_B = EBar.b;

export default const schema = Joi.object().keys({
  bar: Joi.string().valid(BAR_A, BAR_B),
  baz: Joi.array().items()
});

И схема, и служба импортируютсяв foo/index.ts файле:

import { methodA, methodB, methodC } from './service';
import schema from './schema';

// ...use methods and schema

Однако я всегда получаю эту ошибку при запуске приложения:

[Node] Provided module can't be loaded.
[Node] Did you list all required modules in the package.json dependencies?
[Node] Detailed stack trace: Error: Cannot find module '../types'

Но когда я удаляю использование EBar внутри scheme.tsошибка исчезает.

Кто-нибудь испытывал нечто подобное?

Репо с воспроизводимой демонстрацией - https://github.com/voronianski/ts-types-imports-issue

...