Wednesday, May 3, 2023
HomeReactTypeScript: React useState Hook

TypeScript: React useState Hook

When utilizing React’s useState Hook in TypeScript, the strategy often infers the implicit kind for the returned state from the supplied argument robotically. Within the following instance, React’s useState Hook in a is aware of that it offers with a quantity kind. Therefore the returned state (right here: rely) has the sort quantity along with the state updater perform (right here: setCount) which takes a worth of kind quantity as argument:

import * as React from 'react';

const App = () => {

const [count, setCount] = React.useState(0);

const handleIncrease = () => {

setCount(rely + 1);


return (


<button kind="button" onClick={handleIncrease}>







export default App;

Nonetheless, when working with different varieties than primitives (e.g. advanced varieties for objects, nullish varieties, union varieties), inferring the sort robotically doesn’t all the time work. Then you should use kind arguments with TypeScript with which you’ll inform React’s useState Hook’s generic kind explicitly in regards to the kind. I like to make use of this as a finest follow anyway, as a result of it makes the code self-descriptive:

import * as React from 'react';

const App = () => {

const [count, setCount] = React.useState<quantity>(0);



If the sort argument turns into one thing else than a primitive, extract it as TypeScript interface:

import * as React from 'react';

interface UserFormState {

e mail: string;

password: string;


const App = () => {

const [userForm, setUserForm] = React.useState<UserFormState>({

e mail: '',

password: '',




That is it. Principally you possibly can depend on TypeScript’s potential to robotically infer the sort. Nonetheless, generally it is advisable to use kind arguments from TypeScript to assist the TS compiler out. If you wish to have self-descriptive code, you should use kind arguments anyway.



Please enter your comment!
Please enter your name here

Most Popular

Recent Comments