Экспорт не найден в модуле - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть библиотека, в одном из файлов я экспортирую интерфейс:

export interface MyInterface {
...
}

и существует экспорт по умолчанию, который является компонентом реакции.

В файле index.ts я импортирую несколько вещей и реэкспортирую их:

import Something from "./Something";
import OtherStuff from "./OtherStuff";
import ExportDefault, { MyInterface } from "./QuestionFile";

export { Something, OtherStuff, ExportDefault, MyInterface };

Когда я компилирую, я получаю ошибку:

MyInterface не экспортируется в QuestionFile.

Моя цель заключается в том, чтобы любой, кто импортирует мою библиотеку, мог импортировать и это определение типа для использования.

Есть ли лучший способ сделать это?

если я сделаю:

export * from "./QuestionFile"

это работает, иначе это нарушает мою сборку.

Пример того, что происходит, можно найти в этом хранилище: https://github.com/PlayMa256/typescript-babel-error

1 Ответ

0 голосов
/ 10 сентября 2018

Реэкспорт типов - это одна из известных конструкций TypeScript, которые не работают при использовании Babel для компиляции TypeScript, поскольку они требуют кросс-файловой информации. Вы можете включить опцию компилятора isolatedModules TypeScript, чтобы сообщать об этих конструкциях как об ошибках, когда вы компилируете с tsc (не Babel) или используете языковую службу TypeScript в IDE. export * - это один из обходных путей; другая описанная в эта проблема - использовать псевдоним типа вместо реэкспорта. Еще один обходной путь - объединить константу с интерфейсом. (Это взлом, но он избегает некоторых недостатков других подходов.)

export interface testInterface {
    name?: string;
}
export const testInterface = undefined;
...