visual-studio-code - 在 VSCode 中获得适当的 Linting 流的推荐方法?
问题描述
我在这里阅读了很多关于如何设置 VSCode 以允许在// @flow
文件顶部启用 Javascript 文件的 linting 的讨论。
我相信我已经正确地实施了一些事情,但仍然遇到一些似乎表明其他情况的神秘错误。
例如,我在这里得到Missing type annotation for destructuring.Flow(InferError)
一个classes
:
const AddCustomer = ({ classes }) => {
所以我把它改成这样:
const AddCustomer = ({ classes:any }) => {
但错误仍然存在。
这是对目前在我的 VSCode 中工作方式的另一个观察:
export const useFetch = (initialUrl, initialData) => {
使用此代码,我收到未键入两个参数的警告。所以我把代码改成这样:
export const useFetch = (initialUrl:string, initialData:any) => {
没有立即发生,但是当我保存文件时,警告就消失了。不是什么大问题,但这不是我期望 linter 工作的方式。
@flow
可能有人对为什么linting 在我的 VSCode 中不能正常工作有任何想法吗?
解决方案
因此,对于关于 的第一个问题Missing type annotation for destructuring.Flow(InferError)
,我认为类型放置在错误的位置。语法({ classes: any })
是将classes
第一个参数上的属性重命名为any
. 更详尽的解释可以在 MDN 的页面Destructuring assignment中阅读。要正确指定对象参数的类型,您需要将类型定义放在对象之后
const addCustomer = ({ classes }: { classes: any }) => { ... };
这可能会让人觉得冗长和重复,但其想法是将代码与类型分开。例如,客户的类型定义可能是从另一个文件中导入的,因此代码看起来更像
// types.js
export type Customer = { classes: any };
// index.js
import type { Customer } from './types';
const addCustomer = ({ classes }: Customer) => { ... };
这允许以任何方式指定参数(例如,不进行解构)和以任何方式指定类型。
对于您的第二个问题,请检查以确保设置flow.runOnEdit
设置为true
. 这将允许 Flow 在不保存的情况下检查您的文件。如果这似乎不能解决问题,那么我会向 VSCode 扩展的维护者提出问题。
推荐阅读
- c# - 如何防止错误的 WM_CLOSE 事件?
- javascript - ajax的序列化方法不返回所需的值
- reactjs - 从 React 中的 fetch 获取 401 - 传递 sessionId
- c# - ASP.NET Core Identity:打算保留应用程序 cookie?
- phpunit - 如何针对现有的而不是测试运行测试 - Drupal 数据库
- javascript - 使用 ReactJs 和 Node.js 构建搜索过滤器
- angular - 在 Angular 应用程序中存储数据或使用 maxlength 调用后端的更好方法
- python - Keras 2d 散射预测
- php - 使用 Laravel Eloquent 从列中直接增加或减少数字更新
- r - 什么 R Shiny 布局允许我插入地图作为整个页面的背景?