typescript - 如何在 WebStorm 中抑制 TS2322 警告?
问题描述
我在 WebStorm 中创建了一个项目,该项目使用expo init
配置为使用 ESLint@typescript-eslint
并启用和启用“Typescript 语言服务”(并禁用 TSLint)的 IDE。
App.tsx
如果我用下面的代码替换 的内容,我会在 IDE 的编辑器中突出显示许多检查错误。我可以(如预期的那样)消除其中的大部分
/* eslint-disable @typescript-eslint/explicit-member-accessibility, @typescript-eslint/no-use-before-define, @typescript-eslint/explicit-function-return-type */
但一些错误仍然存在,特别是
与每个Component
in相关联App
。render
正如预期的那样,我也可以通过禁用“Typescript Language Service”来禁用这些错误,但不能(尽管 IDE 建议这样做)@ts-ignore
(在任何范围内)。
唯一干净的就是更换
class Counter extends Component
和
class Counter extends Component<any>
TS2322
在我的项目中抑制错误的正确方法是什么?为什么使用<any>
工作(我应该使用它)以及为什么@ts-ignore
没有效果?
import React, { Component } from 'react'
import { View, Text, StyleSheet } from 'react-native'
class Counter extends Component {
state = {count: 0}
componentDidMount() {
setInterval(() => {
this.setState({count: this.state.count + 1})
}, 1000)
}
render() {
const {count} = this.state
const {color, size} = this.props
return (
<Text style={{color, fontSize: size}}>
{count}
</Text>
)
}
}
export default class App extends Component {
render() {
return (
<View style={styles.container}>
<Counter color={'lightblue'} size={16} />
<Counter color={'skyblue'} size={32} />
<Counter color={'steelblue'} size={80} />
<Counter color={'darkblue'} size={140} />
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
})
解决方案
您可以将@ts-ignore
其放在 JSX 中的组件正上方以抑制它,例如:
{/*
// @ts-ignore */}
<Counter color={'lightblue'} size={16} />
(参见https://github.com/Microsoft/TypeScript/issues/27552。)
但我强烈建议以打字稿的方式重新编写组件以消除编译器错误,例如:
interface IProps {
color: string;
size: number;
}
interface IState {
count: number;
};
export default class Counter extends Component<IProps, IState> {...}
推荐阅读
- python - 逗号分隔符的推荐替代方案是什么
- android - 如何在同一 X 轴坐标上获取文本块 [Google Cloud Vision API]
- sql - Azure 基本层 DTU - 基本层 (B DTU) 的不同费率
- python - 尝试解析 JSON 文件时不理解此 TypeError
- html - 使用多个 css 类创建类名不起作用
- vega - 使用在线 Vega 编辑器自定义字体?
- hyperledger-fabric - AWS CloudFormation 启动 Hyperledger Fabric 失败并出现错误:创建失败:[EC2InstanceForDev]
- javascript - 具有更多悬停效果的独特图像
- javascript - Javascript clearInterval 不起作用(没有错误);秒 相同参数的间隔
- html - 使用 Nuxt.js 从单个 HTML 页面预渲染多个页面