繁体   English   中英

在 VS 代码中,我可以验证我的 Javascript 但忽略特定的 Typescript 错误吗?

[英]In VS Code Can I Validate my Javascript But Ignore a Specific Typescript Error?

我在 Visual Studio Code(不是 Typescript)中写 Javascript。 但是,我在jsconfig.json中的compilerOptions中添加了"checkJs": true ("Enable type checks on JavaScript files") 以启用自动导入。

现在我已经这样做了,我得到了Typescript错误(波浪线),例如:

JSX 元素类型“Foo”没有任何构造或调用签名。 ts(2604)

我可以通过禁用有效性检查来删除这些,但是我会失去正常的 Javascript 有效性检查。

我的问题是:是否可以进行自动导入和Javascript有效性检查,但在 VS Code 中没有Typescript错误? 例如,我可以在jsconfig.json中设置一些标志来禁用最后带有“ts”的错误吗?

如果没有,我该如何修复 Javascript 文件中的 Typescript 错误......而不必采用 Typescript?

编辑:只是为了帮助澄清我想象的那种解决方案......假设我们在这里谈论 ESLint。 是的,我可以在文件顶部添加注释以使 ESLint 忽略该文件,但随后我会丢失所有 linting。

我更多的是在.eslintrc文件中寻找能够说"ts2604": false"ts*": false的等价物,或者类似的东西。 换句话说,我不想采用 Typescript,或者失去所有类型意识......我只想要 VS Code 的出色Javascript功能,而我的大部分代码不会被我不能做的错误/警告消息下划线任何关于。

这可能是一个红鲱鱼,但你所有的错误都与 JSX 有关吗? 如果您指定要用于 JSX 的工厂,TypeScript 可以处理 JSX(在*.tsx*.jsx文件中)。 该错误看起来像 TS 找不到工厂 class (所以它有<Foo>并且不知道将它传递给什么)。 通常这将类似于(设置说 React,但对于 Preact 或其他 JSX 库它们是相同的):

"compilerOptions": {
    "jsx": "react",
    "jsxFactory": "probably the same as transform-react-jsx setting in your plugins"
}

TS docs 中有更多内容。

一般来说,我发现最好的做法是在 JS 之前修复 TS 错误,但这并不总是可行的,所以另一个选项是在前一行添加// @ts-ignore// @ts-nocheck以跳过类型检查文件。

// @ts-ignore确实适用于这种情况,但这不是一个长期解决方案 - 你正在升级,你知道它有效,你只需要 TS 暂时跳过失败检查。 但是,当您知道代码有效并且 TS 在某处缺少定义时,它可能是正确的补丁。

最近我一直在使用 Visual Studio Code 在 React 中进行编码,并且我们有一个团队建议使用ESLint 扩展

它有很多配置能力,下面的一个可能符合你的需求:

eslint.probe = 应该激活 ESLint 扩展并尝试验证文件的语言标识符数组。 如果对探测语言的验证失败,则扩展程序会说静默。 默认为 ["javascript"、"javascriptreact"、"typescript"、"typescriptreact"、"html"、"vue"]。

VS Code 的 JavaScript 类型检查由 TypeScript 提供支持。 您在 JS 文件中看到的错误不是 TypeScript 语言错误,而是 TypeScript 引擎说:“嘿,这个 JavaScript 代码看起来是无效的”。 TypeScript 引擎试图尽可能地理解 JavaScript,但 JavaScript 的动态特性有时可能会出错,您可能需要通过一些 JSDoc 注释来帮助它。

因此,理想情况下,您应该解决这些错误。 如果这不可能,您可以在错误上方的行上使用// @ts-ignore注释来抑制错误(这是作为错误的快速修复提供的)

此 TypeScript 功能请求还跟踪抑制特定错误代码的能力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM