Babel.js 命名空间未标记为仅类型声明

44u64gxh  于 2022-12-08  发布在  Babel
关注(0)|答案(1)|浏览(206)

我有一个 typescript 文件,看起来像这样:

export namespace MyNamespace {
    export const myFunc = (a:number) => 3;
}

当我编译它时(在我的例子中,我使用的是storybook),我得到了这个错误:

Namespace not marked type-only declare. Non-declarative namespaces are only supported experimentally in Babel
. To enable and review caveats see: https://babeljs.io/docs/en/babel-plugin-transform-typescript

据我所知,这是一个试图编译TS的错误。
这个错误“Namespace not marked type-only declare”令人费解,因为它看起来不是正确的英语。这里应该有一个逗号吗?
我应该声明一些东西吗?什么是类型唯一的命名空间?

oug3syen

oug3syen1#

declare是Typescript中的一个关键字,“type-only”指的是它的行为。当你把关键字declare添加到namespace中时,它可能只包含类型。所以,这个错误表明Babel不支持namespace(当被问到这个问题时,默认情况下),除非你使用这个关键字,并且你只能在你只使用类型时使用这个关键字。
对于您的示例,它包含的不仅仅是类型,所以您需要更新到enablesnamespace默认支持的Babel的最新版本(〉= v7.13.0),或者按照错误中的链接将配置选项更改为allowNamespaces: truehttps://babeljs.io/docs/en/babel-plugin-transform-typescript

相关问题