js'types'只能在.ts文件中使用 - 使用@ ts-check的Visual Studio代码

jam*_*mes 81 javascript typescript visual-studio-code

我开始在我正在Visual Studio代码中工作的Node项目中使用TypeScript.我想遵循"选择加入"策略,类似于Flow.因此,我放在// @ts-check我的.js文件的顶部,希望为该文件启用TS.最终,我希望获得与"linting"相同的Flow体验,因此我安装了插件TSLint,因此我可以看到Intellisense警告/错误.

但我的文件看起来像:

// @ts-check

module.exports = {
  someMethod: (param: string): string => {
    return param;
  },
};
Run Code Online (Sandbox Code Playgroud)

我的tsconfig.json文件看起来像......

{
  "compilerOptions": {
      "target": "es2016",
      "module": "commonjs",
      "allowJs": true
  }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:[js] 'types' can only be used in a .ts file.如下图所示.

来自vscode的错误

我看到这个问题建议在vscode中禁用javascript验证,但那时我没有向我显示任何 TypeScript Intellisense信息.

我尝试设置tslint.jsEnabletrue作为TSLint扩展文档中提到,但没有运气就在我vscode设置.

为了使用.jsTypeScript文件并获得Intellisense ,正确的设置是什么,所以在运行任何TS命令之前,我知道代码中的错误是什么?

Ida*_*gan 148

我正在使用@flow和vscode,但遇到了同样的问题.

我用这个步骤解决了它:

  1. 安装扩展Flow语言支持
  2. 禁用内置的TypeScript扩展:

如何禁用内置TypeScript:

  1. 转到扩展选项卡
  2. 搜索@builtin TypeScript和JavaScript语言功能
  3. 单击" 禁用"

  • 仅仅是一个FYI:禁用此扩展基本上取消了使用VSCode进行JS开发的所有好处.相反,您应该将以下内容添加到您的设置json文件中:`"javascript.validate.enable":false` (60认同)
  • 接受的答案并不总是正确的.VSCode中有一个错误,React Native和Flow在.js文件中提供相同的消息,在这种情况下,你不应该改为.ts,而是继续.js并按照这里的建议修复问题! (5认同)
  • 正如@heez 提到的,这会影响,查找对 javascript 文件的引用、自动完成等不会禁用 Javascript 语言功能。 (3认同)
  • 有效答案由@heez说 (2认同)

Ade*_*ran 56

"javascript.validate.enable": false你的VS代码设置,它不会禁用ESLINT.我同时使用ESLINT和Flow.只需按照Flow For Vs Code Setup说明操作即可

在settings.json中添加此行.帮助 "javascript.validate.enable": false

  • 有了这个你不必禁用打字稿.两者都可以存在.最佳方案! (4认同)
  • 在哪里可以找到 settings.json 文件? (3认同)
  • 很好的解决方案,请注意,您也可以针对每个项目/工作空间执行此操作。因此,您可以在其中一个中进行正常的“typescript”验证,在另一个中进行“flow”验证。在设置页面上查找“工作区”选项卡。 (3认同)
  • 如果您使用ESLint来验证Java脚本,则此答案是最佳解决方案。更多信息:https://code.visualstudio.com/docs/languages/javascript#_how-do-i-disable-syntax-validation-when-using-non-es6-constructs以及https://github.com/ flowtype / flow-for-vscode#setup (2认同)
  • 你好@i18n 转到:代码 -> 首选项 -> 设置 -> 扩展 -> 向下滚动并找到“在 settings.json 中编辑”。实际上找到下面这个:“包含语言启用默认情况下不支持的语言的 Emmet 缩写”。在此处添加语言与 emmet 支持的语言之间的映射。例如:{“vue-html”:“html”,“javascript”:“javascriptreact”}`点击settings.json中的编辑并添加:`“javascript.validate.enable”:false`。 (2认同)

sur*_*tya 40

我按照以下步骤解决了该问题:

转到首选项,然后转到设置: 设置

进入设置后,javascript.validate在搜索栏中搜索并取消选中复选框: 搜索栏中的文本

如果你想通过 json 编辑它,那么:转到:代码 -> 首选项 -> 设置 -> 扩展 -> 向下滚动并找到“在 settings.json 中编辑”。扩大 然后加

"javascript.validate.enable": false
Run Code Online (Sandbox Code Playgroud)

显示设置.json


Ken*_*und 9

对于登陆这里且所有其他解决方案均无效的任何人,请尝试一下。我正在使用 typescript + React,我的问题是我将 vscode 中的文件关联起来,所以javascriptreact没有typescriptreact检查您的以下条目的设置。

   "files.associations": {
    "*.tsx": "typescriptreact",
    "*.ts": "typescriptreact"
  },
Run Code Online (Sandbox Code Playgroud)