gpt4 book ai didi

typescript - 如何使用 typescript 转译,只有特定文件?

转载 作者:行者123 更新时间:2023-12-04 14:47:10 26 4
gpt4 key购买 nike

这是我的计划。我想使用适用于 Windows 和 Mac 的 Typescript 构建应用程序。但是,由于我要将 Typeascript 代码转换为 Javascript 代码,所以我想尽可能实现一些功能。我想在需要时只获取 Windows 代码,在需要时只获取 Mac 代码。

他们的方式我想要这样做,或者至少尝试,是使用 tsconfig.json 中的 exclude

让我们举个简单的例子。在根项目中,我会有 src 文件夹。在里面,我会有 code.ts 文件。另外:code.darwin.tscode.windows.ts 文件。

代码.darwin.ts:

const Logger = () => {
console.log('DARWIN');
}

export default Logger;

代码.windows.ts:

const Logger = () => {
console.log('WINDOWS');
}

export default Logger;

代码.ts:

import Logger from './code.darwin';
import Logger from './code.windows';

Logger();

在此示例中,如果我只需要 mac 代码,我会使用 tsconfig.json:

{
"compilerOptions": {

"target": "ES2017", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
"outDir": "./dist", /* Redirect output structure to the directory. */
"rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
"strict": true, /* Enable all strict type-checking options. */
"alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
"typeRoots": ["./node_modules/@types"], /* List of folders to include type definitions from. */
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
"skipLibCheck": true, /* Skip type checking of declaration files. */
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
},
"exclude": ["**/*.windows.ts"],
}

但是,我在 code.ts 中遇到了 ts 冲突错误,因为我从 2 个文件导入了相同的东西。知道如何解决吗?

我这样做的方式不是必须的。我对使用 Typescript 的其他建议持开放态度。最重要的是,我最终只能得到一个操作系统平台代码。

最佳答案

您可以使用 Typescript 的动态导入功能。您应该使用 process.platform 才能使其正常工作。

将您的 code.ts 文件编辑为:

import(`./code.${process.platform}`).then((logger) => {
logger();
});

保持所有其他文件相同。

注意导入表达式。根据您的需要进行调整。

关于typescript - 如何使用 typescript 转译,只有特定文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69823965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com