我开始在Visual Studio Code中使用的Node项目中使用TypeScript。我想按照"选择加入"策略,类似于Flow。因此,我将// @ts-check
放在.js
文件的顶部,希望为该文件启用TS。最终我想要同样的经历" linting"作为Flow,因此我安装了插件TSLint,因此我可以看到Intellisense警告/错误。
但我的文件看起来像:
// @ts-check
module.exports = {
someMethod: (param: string): string => {
return param;
},
};
和我的tsconfig.json
文件看起来像......
{
"compilerOptions": {
"target": "es2016",
"module": "commonjs",
"allowJs": true
}
}
我收到此错误:[js] 'types' can only be used in a .ts file.
,如下图所示。
我看到this question建议在vscode中禁用javascript验证,但那时我没有向我显示任何 TypeScript Intellisense信息。
我尝试在我的vscode设置中将tslint.jsEnable
设置为true
,如TSLint扩展文档中所述,但没有运气。
为了将.js
文件与TypeScript一起使用并获取Intellisense,正确的设置是什么,以便在运行任何TS命令之前知道代码中的错误是什么?
答案 0 :(得分:90)
我正在使用@flow和vscode,但遇到了同样的问题。
我用这个步骤解决了它:
如何禁用内置TypeScript:
答案 1 :(得分:31)
在VS代码设置中使用"javascript.validate.enable": false
,它不会禁用ESLINT。我同时使用ESLINT&流。只需按照Flow For Vs Code Setup
在settings.json中添加此行。帮助
"javascript.validate.enable": false
答案 2 :(得分:0)
您必须使用.ts
文件 - 例如test.ts
获取Typescript 验证,intellisense typing
vars,返回类型以及" typed"错误检查(例如,将string
传递给期望number
参数的方法会出错。
它将被转换为(标准).js
via tsc
。
需要根据投票,非常有用的评论和其他答案进行澄清。
types
是的,您可以使用@ts-check
在type
个文件中.js
检查VS代码 - 如动画中所示
我最初指的是 Typescript types
在.ts
中是这样的,这不是完全相同的事情:
hello-world.ts
function hello(str: string): string {
return 1;
}
function foo(str:string):void{
console.log(str);
}
这不会编译。 Error: Type "1" is not assignable to String
强>
如果您在 Javascript hello-world.js
文件中尝试了此语法:
//@ts-check
function hello(str: string): string {
return 1;
}
function foo(str:string):void{
console.log(str);
}
显示OP引用的错误消息:[js] 'types' can only be used in a .ts file
如果我错过的内容涵盖了此内容以及OP的背景,请添加。让我们全都学习。
答案 3 :(得分:0)
对于在这里着陆并且所有其他解决方案均无效的人,请尝试一下。我正在使用打字稿+反应,我的问题是我将vscode中的文件关联为javascriptreact
而不是typescriptreact
,因此请检查以下各项的设置。
"files.associations": {
"*.tsx": "typescriptreact",
"*.ts": "typescriptreact"
},
答案 4 :(得分:0)
只需将变量默认为期望的类型即可:
(number=1) => ...
(number=1.0) => ...
(string='str') ...
答案 5 :(得分:0)
"typescript.validate.enable": false
IN VS Code -> Preferences -> Settings -> 搜索上述属性并禁用该属性
答案 6 :(得分:0)