IntelliJ中开启tsconfig的declaration后无法生成JS文件
TypeScript配置问题解答
你的理解是否正确?
是的,你的理解完全正确。当declaration设为true且emitDeclarationOnly设为false时,TypeScript编译器应该同时生成编译后的.js文件和对应的类型声明.d.ts文件。
可能的原因分析
rootDir配置不匹配:你的rootDir设为./,会将当前目录下所有文件纳入源码根目录范围。如果test/目录外存在其他.ts文件,可能干扰编译器的输出逻辑,导致test/下的.js文件无法正常生成。建议将rootDir改为./test,与include的范围保持一致。- TypeScript版本Bug:部分旧版本的TypeScript在
declaration与outDir组合使用时存在兼容性问题,会出现只生成声明文件的异常。尝试升级TypeScript到最新稳定版本后重新测试。 - 目录权限不足:
static/gen/目录可能没有写入权限,导致.js文件无法生成,但声明文件可能因创建顺序等原因被保留。检查该目录的读写权限,确保编译器有权写入文件。 - 配置被隐式覆盖:可能存在其他配置文件(如
tsconfig.extend.json)或命令行参数,覆盖了当前tsconfig.json的设置。比如运行tsc时添加了--emitDeclarationOnly参数,会强制只生成声明文件。可通过tsc --showConfig命令查看最终生效的配置,确认是否存在覆盖情况。 - 源码无有效可编译内容:如果
test/下的.ts文件全是类型定义(如.d.ts)或仅包含类型声明逻辑,编译器不会生成对应的.js文件,但会输出.d.ts文件。检查test/目录下的文件内容,确认是否包含可编译的代码逻辑。
内容的提问来源于stack exchange,提问作者Dakusan
相关产品推荐
相关产品推荐

