Экспорт не найден в модуле

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

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.

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

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

if I do:

export * from "./QuestionFile"

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

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


person PlayMa256    schedule 10.09.2018    source источник


Ответы (2)


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

export interface testInterface {
    name?: string;
}
export const testInterface = undefined;
person Matt McCutchen    schedule 10.09.2018

Из https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/:

В качестве решения в TypeScript 3.8 мы добавили новый синтаксис для импорта и экспорта только типа.

import type { SomeThing } from "./some-module.js";

export type { SomeThing };
person Séverin Beauvais    schedule 16.02.2021