没有模块时如何在命名空间中包含函数?

How to include functions in namespace when don't have module?

提问人:Cflowe Visit 提问时间:7/4/2022 更新时间:7/4/2022 访问量:56

问:

没有模块时如何在命名空间/模块中包含函数?

示例:我有一个命名空间:

namespace Java {}

在 TypeScript 中,通常当我们需要命名空间或模块中的函数时,我们会添加 'export':

namespace Java {
    export function version() {
        return "java8";
    }
}
namespace JavaScript {
    function JavaVer() {
        return Java.version();
    }
}

但是如果我将模块设置为无:

// tsconfig
"module": "none",

如果模块为 none,则无法使用 import / export:

website/sourcecode/main.ts:17:21 - error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'.

17 导出函数 version() {}

那我能做些什么呢?

图像:enter image description here

JavaScript TypeScript 模块 命名空间 导出

评论

0赞 jsejcksn 7/4/2022
为什么要在 TSConfig 中设置?{ "module": "none" }

答:

0赞 jsejcksn 7/4/2022 #1

您可以使用普通对象:

TS游乐场

const Java = {
  version () {
    return "java8";
  },
};

const JavaScript = {
  JavaVer () {
    return Java.version();
  },
};

const vJ = Java.version(); // string
const vJS = JavaScript.JavaVer(); // string
console.log(vJ === vJS); // true

0赞 Tommy Nguyen 7/4/2022 #2

在这里得到的回答是:它实际上是“不能在顶级进行任何进出口”。在命名空间内导入和导出是可以的,因为它们在运行时不会从.ts文件中导出任何内容,只要文件仍然是“不是模块”,module=None 就可以正常工作。 这里有很长的解释