1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 07:08:01 +00:00

Add Set The Type For A useState Hook as a React til

This commit is contained in:
jbranchaud
2021-01-26 16:52:38 -06:00
parent 2594a89c3d
commit 3bf1cb4f15
2 changed files with 31 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud). For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud).
_1026 TILs and counting..._ _1027 TILs and counting..._
--- ---
@@ -735,6 +735,7 @@ _1026 TILs and counting..._
- [@reach/router Renders To A Div](react/reach-router-renders-to-a-div.md) - [@reach/router Renders To A Div](react/reach-router-renders-to-a-div.md)
- [Read Only Input Elements](react/read-only-input-elements.md) - [Read Only Input Elements](react/read-only-input-elements.md)
- [Rendering Multiple Nodes With Fragments](react/rendering-multiple-nodes-with-fragments.md) - [Rendering Multiple Nodes With Fragments](react/rendering-multiple-nodes-with-fragments.md)
- [Set The Type For A useState Hook](react/set-the-type-for-a-usestate-hook.md)
- [Specifying Dependencies Of A useEffect Hook](react/specifying-dependencies-of-a-useeffect-hook.md) - [Specifying Dependencies Of A useEffect Hook](react/specifying-dependencies-of-a-useeffect-hook.md)
- [Spelunking Through Components With Enzyme's Dive](react/spelunking-through-components-with-enzymes-dive.md) - [Spelunking Through Components With Enzyme's Dive](react/spelunking-through-components-with-enzymes-dive.md)
- [Sync Your react-router State With Redux](react/sync-your-react-router-state-with-redux.md) - [Sync Your react-router State With Redux](react/sync-your-react-router-state-with-redux.md)

View File

@@ -0,0 +1,29 @@
# Set The Type For A useState Hook
TypeScript can often infer the type of a `useState` hook. For instance, in the following example, TypeScript infers a type of `boolean`:
```typescript
const [open, setOpen] = React.useState(false);
```
If we have a `useState` hook that can be `null` or a string:
```typescript
const [error, setError] = React.useState(null);
setError('There was an error');
// Argument of type 'string' is not assignable
// to parameter of type 'SetStateAction<null>'
```
then we'll get a TypeScript warning when we violate the inferred type of
`SetStateAction<null>`.
The `useState` can be appropriate typed for this situation like so:
```typescript
const [error, setError] =
React.useState<null | string>(null);
```
[source](https://www.carlrippon.com/typed-usestate-with-typescript/)