如何向 React.useState 添加类型表示法?

Posted

技术标签:

【中文标题】如何向 React.useState 添加类型表示法?【英文标题】:How to add type notation to `React.useState`? 【发布时间】:2019-07-26 18:32:59 【问题描述】:

我正在使用带有钩子的 React 16.8.3,目前我想输入 React.useState

type Mode = 'confirm' | 'deny'  
type Option = Number | null

const [mode, setMode] = React.useState('confirm')
const [option, setOption] = React.useState(100)

使用我当前的代码,mode 的类型是 string,而我想要的是 Mode 类型。 Option 也有同样的问题。

如何给React.useState添加类型符号?

【问题讨论】:

【参考方案1】:

React.useState 使用泛型,因此您可以通过这种方式为其添加类型表示法:

const [mode, setMode] = React.useState<Mode>('confirm')
const [option, setOption] = React.useState<Option>(100)

仅供参考...React.useState 的类型定义:

function useState&lt;S&gt;(initialState: S | (() =&gt; S)): [S, Dispatch&lt;SetStateAction&lt;S&gt;&gt;];

【讨论】:

以上是关于如何向 React.useState 添加类型表示法?的主要内容,如果未能解决你的问题,请参考以下文章

React useState 和 useEffect 混淆

具有 React useState 设置功能的打字稿类型的 Ramda 镜头组合

React hooks - 如何测试多个 useState hooks

React useState() 使用指南

React useState 挂钩错误:“xxx”类型的参数不可分配给“SetStateAction<xx>”类型的参数

React useState:如何使用 onChange 输入和 OnClick 按钮更新我的 useState?