如何在苗条文件中传输Typescript常量枚举?
我的项目中的如何在苗条文件中传输Typescript常量枚举?,typescript,enums,svelte,Typescript,Enums,Svelte,我的项目中的.svelte文件中的Typescriptconst enums有问题。我有一个类型定义文件,在项目的多个部分之间共享。这里有两个名称空间(事件和过程),每个名称空间由3-4个带有事件/过程名称的枚举组成,一个用于项目的每个部分 所以结构看起来像这样 namespace Shared { namespace Events { const enum Server { BC = "DF", ... } const
.svelte
文件中的Typescriptconst enum
s有问题。我有一个类型定义文件,在项目的多个部分之间共享。这里有两个名称空间(事件和过程),每个名称空间由3-4个带有事件/过程名称的枚举组成,一个用于项目的每个部分
所以结构看起来像这样
namespace Shared {
namespace Events {
const enum Server {
BC = "DF",
...
}
const enum Client {
AB = "DB",
...
},
const enum SomethingElse {
...
}
...
},
namespace Procedures {
...
}
}
这种方法适用于项目的每一个部分——除了苗条的文件。
因此,如果我试图在任何其他环境(包括相同“部分”的.ts文件)中使用Shared.Events.Server.BC
,我会得到DF
。如果我试图在.svelte文件中使用它,在绑定后,在生成的.js文件中,它保持不变:Shared.Events.Server.BC
。(由于运行时中没有共享,因此无法工作)
由于项目其他部分的技术限制,我无法切换到纯enum
s
对于捆绑,我使用了Rollup、svelte preprocess和@Rollup/plugin typescript,它们具有非常标准的配置:
svelte({
dev: isDevelopment,
extensions: [".svelte"],
preprocess: sveltePreprocessor(),
emitCss: true,
css: function(css) {
css.write(path.join(dest, 'bundle.css' ));
},
onwarn: (warning, handler) => {
if (warning.code.indexOf("a11y") !== -1) return;
handler(warning);
}
}),
typescript({ typeRoots: ["./types/", "./node_modules/@types/"] }),
resolve(),
commonjs({ include: "node_modules/**", extensions: [".js", ".ts"] }),
...
我认为目前不支持这一点
svelte preprocess
单独传输每个svelte文件,而不知道“外部世界”,因此它无法知道Shared.Events.Server.BC
解析为“DF”
。请记住,不建议混合使用es6和名称空间。看看这个。