我想在我的库中(在React应用程序中)为另一个库(在这种情况下为monaco编辑器)的导出成员提供一个更简单的接口。为此,我创建了一个index.ts文件,该文件确实重新导出了许多类型,并在其中删除了内部名称空间。效果很好:
import { languages } from "monaco-editor/esm/vs/editor/editor.api";
export type FoldingRange = languages.FoldingRange;
export type FoldingContext = languages.FoldingContext;
export type FoldingRangeKind = languages.FoldingRangeKind;
最后一行除外,因为FoldingRangeKind
是一个枚举。我不能在这里使用export enum
,因为这需要完整的枚举定义。
另一种选择是:
export import FoldingRangeKind = languages.FoldingRangeKind;
但不幸的是,通天塔不接受。导致此错误:
import = {
is not supported by @babel/plugin-transform-typescript Please consider using
从'';`以及Typescript的--allowSyntheticDefaultImports选项导入。
默认导入在这里无济于事,所以我想知道该怎么做。
答案 0 :(得分:2)
枚举不是类型,而是对象。它的值也是值,因此您需要将它们分配给常量。
enum languages {
FoldingRange,
FoldingContext,
FoldingRangeKind
}
export const FoldingRange = languages.FoldingRange;
export const FoldingContext = languages.FoldingContext;
export const FoldingRangeKind = languages.FoldingRangeKind;
interface iLanguages {
FoldingRange: 0,
FoldingContext: 1,
}
export type FoldingRange = iLanguages["FoldingRange"];
export type FoldingContext = iLanguages["FoldingContext"];
export type FoldingRangeKind = languages.FoldingRangeKind;
然后将进行编译(playground)。希望可以为您清除它。
var languages;
(function (languages) {
languages[languages["FoldingRange"] = 0] = "FoldingRange";
languages[languages["FoldingContext"] = 1] = "FoldingContext";
languages[languages["FoldingRangeKind"] = 2] = "FoldingRangeKind";
})(languages || (languages = {}));
export const FoldingRange = languages.FoldingRange;
export const FoldingContext = languages.FoldingContext;
export const FoldingRangeKind = languages.FoldingRangeKind;