
[英]Visual Studio Code 'const' can only be used in a .ts file
[英]Error: 'types' can only be used in a .ts file - Visual Studio Code using @ts-check
我开始在 Visual Studio Code 中处理的 Node 项目中使用 TypeScript。 我想遵循类似于 Flow 的“选择加入”策略。 因此,我将// @ts-check
放在我的.js
文件的顶部,希望为该文件启用 TS。 最终,我希望获得与 Flow 相同的“linting”体验,因此我安装了插件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.
如下图所示。
我看到了这个问题,它建议在 vscode 中禁用 javascript 验证,但它没有向我显示任何TypeScript Intellisense 信息。
如 TSLint 扩展文档中所述,我尝试在我的 vscode 设置中将tslint.jsEnable
设置为true
但没有成功。
为了将.js
文件与 TypeScript 一起使用并获得 Intellisense 的正确设置是什么,这样我在运行任何 TS 命令之前就知道代码中的错误是什么?
在 VS Code 设置中使用"javascript.validate.enable": false
,它不会禁用 ESLINT。 我同时使用 ESLINT 和 Flow。 只需按照Vs 代码设置流程的说明进行操作
在 settings.json 中添加这一行。 帮助"javascript.validate.enable": false
对于任何登陆这里并且所有其他解决方案都不起作用的人,请尝试一下。 我正在使用 typescript + react,我的问题是我将 vscode 中的文件关联为javascriptreact
而不是typescriptreact
,因此请检查以下条目的设置。
"files.associations": {
"*.tsx": "typescriptreact",
"*.ts": "typescriptreact"
},
您必须使用.ts
文件 - 例如test.ts
来获取 Typescript
验证、vars 的智能
typing
、返回类型以及“类型化”错误检查(例如,将string
传递给需要number
参数的方法会出错) .
它将通过tsc
转换为(标准) .js
。
需要根据否决票、非常有用的评论和其他答案进行澄清。
types
是的,您可以使用@ts-check
在.js
文件中的 VS Code 中进行type
检查 - 如动画所示
我最初所指的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 上下文的内容,请添加。 让我们都学习。
“typescript.validate.enable”:假
在 VS Code -> 首选项 -> 设置 -> 搜索上述属性并禁用该属性
我开始在我在 Visual Studio Code 中处理的 Node 项目中使用 TypeScript。 我想遵循类似于 Flow 的“选择加入”策略。 因此,我将// @ts-check
放在我的.js
文件的顶部,希望为该文件启用 TS。 最终我想要与 Flow 相同的“linting”体验,因此我安装了插件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.
如下图所示。
我看到了这个问题,它建议在 vscode 中禁用 javascript 验证,但这并没有向我显示任何TypeScript Intellisense 信息。
我尝试设置tslint.jsEnable
到true
在我的vscode设置作为TSLint扩展文档中提到,但没有运气。
为了将.js
文件与 TypeScript 一起使用并获得 Intellisense 以便我在运行任何 TS 命令之前知道代码中的错误是什么,正确的设置是什么?
对我有用的解决方案是将以下属性添加到settings.json :
"js/ts.implicitProjectConfig.checkJs": true
Types/Interfaces只能应用于TypeScript个文件,.js文件为JavaScript个文件。
所以解决方案很简单:
将 extension.js 更改为 .tsx 以使用类型/接口。
[Mac] 在您的 Visual Studio Code 中键入以下命令。
Preferences: Open User Settings (JSON)
”"javascript.validate.enable": false
注意:“首选项:打开默认设置(JSON)”是不可编辑的
Go 到设置并搜索 javascript 验证然后禁用该选项以解决此问题。
只需将变量默认为预期类型:
(number=1) => ...
(number=1.0) => ...
(string='str') ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.