let 和 const 关键字在编译后在打字稿中给出错误。 var 工作正常的地方
let and const keyword giving error in typescript after compilation. Where as var works fine
我是打字稿的新手,我正在尝试观看教程。当我使用 const 和 let 时,我遇到了这个问题。编译后 ts 文件显示一些错误标记。但是在使用节点 filename.js 时得到输出。使用 var 时相同的代码没有显示任何问题。你能帮我解决这个问题吗?我已在 While using const, While using var、[let message:string = 'Hello Word'; console.log(message);][4]
下方附上屏幕截图和一小段代码
您的 tsconfig.json
可能缺少 exclude
和 include
。如果没有这些,VSCode 会将当前工作区中的所有文件视为同一个命名空间中的文件。因为你的 TypeScript 源文件有一个名为 message
的变量,而你编译的 JavaScript 文件也有一个名为 message
的变量,VSCode 相信这些定义会“冲突”。
您应该在 tsconfig.json
:
中明确指定要包含和排除的文件
{
"compilerOptions": { ... },
"include": ["**/*.ts"], // or maybe some other paths
"exclude": ["**/*.js"], // don't include javascript files
}
您可以稍后根据需要更改这些;我在此处提供的值包括所有 TypeScript 文件并排除所有 JavaScript 文件。
至于为什么只有 var
有效,这是因为 var
允许您“重新声明”或隐藏变量而不会出错:
var myVariable = "hi!";
var myVariable = 42; //
我是打字稿的新手,我正在尝试观看教程。当我使用 const 和 let 时,我遇到了这个问题。编译后 ts 文件显示一些错误标记。但是在使用节点 filename.js 时得到输出。使用 var 时相同的代码没有显示任何问题。你能帮我解决这个问题吗?我已在 While using const, While using var[let message:string = 'Hello Word'; console.log(message);][4]
您的 tsconfig.json
可能缺少 exclude
和 include
。如果没有这些,VSCode 会将当前工作区中的所有文件视为同一个命名空间中的文件。因为你的 TypeScript 源文件有一个名为 message
的变量,而你编译的 JavaScript 文件也有一个名为 message
的变量,VSCode 相信这些定义会“冲突”。
您应该在 tsconfig.json
:
{
"compilerOptions": { ... },
"include": ["**/*.ts"], // or maybe some other paths
"exclude": ["**/*.js"], // don't include javascript files
}
您可以稍后根据需要更改这些;我在此处提供的值包括所有 TypeScript 文件并排除所有 JavaScript 文件。
至于为什么只有 var
有效,这是因为 var
允许您“重新声明”或隐藏变量而不会出错:
var myVariable = "hi!";
var myVariable = 42; //