我目前正在尝试将现有的JavaScript应用程序转换为TypeScript。为了能够一步一步地完成这一步,我开始使用编译器选项“allowJs”编译现有的JavaScript代码。当我开始将现有文件转换为TypeScript时,我在创建命名空间时遇到错误。
所以,一个基本的例子。我有这两个文件,一个新的TypeScript文件:
namespace myapp {
export var c1 = 5;
}
一个旧的JavaScript文件:
var myapp = myapp || {};
myapp.c2 = 4;
这会导致有效的JavaScript输出,但会出现错误:
error TS2300: Duplicate identifier 'myapp'.
有没有办法避免出现此错误或任何其他方式来转换所有使用相同命名空间的文件?
我的tsconfig.json:
{
"compilerOptions": {
"allowJs": true,
"outDir": "dist"
}
}
答案 0 :(得分:0)
在tsconfig.json
中提供“文件”或“排除”字段,分别包含或排除文件。
{
"compilerOptions": {
"allowJs": true,
"outDir": "dist"
},
"files" : ["/path/to/ts/file.ts", ...]
}
OR
{
"compilerOptions": {
"allowJs": true,
"outDir": "dist"
},
"exclude" : ["node_modules", "/path/to/build/js/"]
}
这个问题的原因是打字稿编译器知道原始(打字稿)源文件和转换(javascript)文件,因此两次获得相同的引用。现在你的工作是要么只包含源打字稿文件,要么排除所有非打字稿文件。