Error: Parameter 'e' implicity has an 'any' type. TS7006 - React Typescript

Error: Parameter 'e' implicity has an 'any' type. TS7006 - React Typescript

参数 'e' 隐式具有 'any' 类型。 TS7006

15 |   const amount = useSelector((state: State) => state.bank)
16 | 
17 |   const handleChangeNumber = (e) => {
   |                               ^
18 |     setInputNumber(+e.target.value)
19 |   }
20 |

上面那个错误信息,下面是代码,我不知道如何修复它。我是打字稿的新手。我可以在变量中定义类型,但在参数中如何为 eevent

的确切类型定义 eevent 的类型
import "./App.css";
import { useState } from 'react';
import { useDispatch, useSelector } from "react-redux";
import { bindActionCreators } from "redux";
import { actionCreators, State } from "./state";

function App() {
  const [inputNumber, setInputNumber] = useState(0);
  const dispatch = useDispatch();

  const { depositMoney, withdrawMoney, bankrupt } = bindActionCreators(
    actionCreators,
    dispatch
  );
  const amount = useSelector((state: State) => state.bank)

  const handleChangeNumber = (e) => {
    setInputNumber(+e.target.value)
  }

  return (
    <div className="App">
      <h1>{amount}</h1>
      <button onClick={() => depositMoney(inputNumber)}>Deposit</button>
      <button onClick={() => withdrawMoney(inputNumber)}>Withdraw</button>
      <button onClick={() => bankrupt()}>Bankrupt</button>
      <input type="number" value={inputNumber} onChange={handleChangeNumber} />
    </div>
  );
}

export default App;

你可以通过定义内联函数让TS自动推断类型:

onChange={(e) => {
  setInputNumber(e.currentTarget.value);
}}

或者您可以开始编写内联函数:

onChange={(e) => {
  
}}

然后将鼠标悬停在像 VSCode 这样的类型感知编辑器中的参数上,以查看它是什么类型。这里是React.ChangeEvent<HTMLInputElement>,所以你可以

const handleChangeNumber = (e: React.ChangeEvent<HTMLInputElement>) => {
  setInputNumber(+e.currentTarget.value)
}

然后返回 onChange={handleChangeNumber}

您可以按如下方式使用

const handleChangeNumber = (e: React.ChangeEvent<HTMLInputElement>) => {
   setInputNumber(e.target.value)
}

您可以使用 React.ChangeEvent<HTMLInputElement> 作为类型。

const handleChangeNumber = (e: React.ChangeEvent<HTMLInputElement>) => {
  setInputNumber(+e.target.value)
}