JIYIK CN >

Current Location:Home > Learning > PROGRAM > TypeScript >

React UseState Hook Types in TypeScript

Author:JIYIK Last Updated:2025/04/15 Views:

This article will demonstrate the use of React hooks in TypeScriptuseState .

React useStatehook definition

React useStatehooks play an important role when using functional components, from storing temporary data to receiving data from API calls. With the introduction of TypeScript, the developer experience has been improved in many ways.

TypeScript supports useStateadding types to React hooks. This is advantageous because TypeScript can infer types during setting values ​​and even detect errors in types.

This can be mitigated earlier, allowing for safe deployment.

According to the TypeScript React documentation, TypeScript useStatehas a common definition for React.

function useState<S>(initialState: S | (() => S)): [S, Dispatch<SetStateAction<S>>];

Here, Sis a generic type. It accepts the initial state, the hook can accept Sthe state indicated by and a function Dispatch<SetStateAction<S>>of type setState.

An easy way to understand setStatethe inferred type of a function is to hover over the variable in any appropriate IDE or text editor like VSCode.

useStateUsing raw types with React Hooks in TypeScript

useStateHooks can set primitive types in application state. Primitive types include number, , stringand boolean.

This is an example of how to use useStatefor primitive types in TypeScript.

const InfoComponent = () => {

    const [name, setName] = React.useState<string>("");
    const [age, setAge] = React.useState<number>(0);
    const [isMarried, setIsMarried] = React.useState<boolean>(false);


    React.useEffect(() => {
        setName("Geralt");
        setAge(95);
        setIsMarried(false);
    }, []);

    return (
        <>
            <div>Witcher name : {name}</div>
            <div>Age : {age}</div>
            <div>Married : {isMarried ? 'Yes' : 'No'}</div>
        </>
    )
}

So useStatehooks have been used to store primitive types which are set useEffectin the hook which is triggered once when the component mounts.

Using user-defined interfaces to store state in TypeScript

Even user-defined interfaces can be used useStateas types of hooks. The code snippet used in the previous section can be modified to store information in an interface, making the code more organized.

interface IUser {
    name : string ;
    age : number ;
    isMarried : boolean ;
}

const InfoComponent = () => {

    const [ state, setState ] = React.useState<IUser>({
        name : "",
        age : 0,
        isMarried : false
    });


    React.useEffect(() => {
        setState({
            name : "Geralt",
            age : 95,
            isMarried : false
        });
    }, []);

    return (
        <>
            <div>Witcher name : {state.name}</div>
            <div>Age : {state.age}</div>
            <div>Married : {state.isMarried ? 'Yes' : 'No'}</div>
        </>
    )
}

To setStateset optional fields in the function, asthe keyword can be used for type assertions. We have to setStateoverride the initial state using the optional state property passed to the function.

setState({
    ...state, ...{
        name : "Geralt",
        isMarried : "false"
    } as unknown as IUser
});

So in the above example, agethe field is not set and the default value is used, which is stateprovided by . State overwriting ...is done with the or spread operator.

useStateUsing Arrays in TypeScript Hooks

When fetching data from an API, arrays can often be useStateused in the hook. The following code snippet demonstrates this while using useStatethe hook to fetch data and display it.

interface IPost {
    userId : number ;
    id : number ;
    title  : string ;
    body : string ;
}

export default App = () => {

    const [ state, setState ] = React.useState<IPost[]>([]);

    const getPosts = async () => {

      const res : Response = await fetch("https://jsonplaceholder.typicode.com/posts");
      const posts : IPost[] = await res.json();
      setState(posts);
    }

    React.useEffect(() => {
        getPosts();
    }, []);

    return (
        <>
            {
              state.map( (post,index) => <div key={index}>
                    <h2>{post.title}</h2>
                    <div>{post.id}</div>
                    <p>{post.body}</p>
                </div>
              )
            }
        </>
    )
}

Previous: None

Next:Nullable types in TypeScript

For reprinting, please send an email to 1244347461@qq.com for approval. After obtaining the author's consent, kindly include the source as a link.

Article URL:

Related Articles

Handling exceptions with try..catch..finally in TypeScript

Publish Date:2025/04/15 Views:170 Category:TypeScript

This article will discuss try..catch..finally handling exceptions in TypeScript using the statement. Handling exceptions in TypeScript In TypeScript, try..catch..finally a block handles exceptions that occur during program runtime. It allow

Convert JSON object to a class in TypeScript

Publish Date:2025/04/15 Views:80 Category:TypeScript

Data on the internet flows in the form of strings, which can be converted into a very popular format called JSON. The JSON representation of this data usually represents an object or even a class in TypeScript. TypeScript provides the abili

Update TypeScript to the latest version using NPM

Publish Date:2025/04/15 Views:119 Category:TypeScript

This article provides a guide to update to the latest version of TypeScript using npm, which is the best and most popular method used by developers. This also gives us an in-depth look at what npm is and why to use it. Node Package Manager

Using jQuery and TypeScript

Publish Date:2025/04/15 Views:148 Category:TypeScript

This article provides the basic understanding and concepts of using jQuery with TypeScript. It guides on how to use jQuery in TypeScript through a coding example and outputs using various methods in TypeScript and provides knowledge about w

Checking for undefined in TypeScript

Publish Date:2025/04/15 Views:196 Category:TypeScript

This article will demonstrate how programmers can check for undefined in TypeScript using various coding examples and situations. It not only gives you an understanding of checking for undefined in TypeScript, but also helps in differentiat

exclude attribute in TypeScript

Publish Date:2025/04/15 Views:190 Category:TypeScript

This article will discuss excluding properties from a TypeScript type. The exclude property is used to create another type from an existing type with fewer or modified properties. Omit Exclude properties from types in TypeScript TypeScript

Function return types in TypeScript

Publish Date:2025/04/15 Views:174 Category:TypeScript

TypeScript is a strongly typed language and it is always encouraged to define the types correctly for all variables used in TypeScript. These types can help in development later, especially during debugging. In addition to variables, functi

Dictionary or map type in TypeScript

Publish Date:2025/04/15 Views:131 Category:TypeScript

Dictionaries or maps are used to quickly retrieve items from an object. TypeScript does not have any concept of maps or dictionaries. Plain JavaScript has objects that can set and retrieve key-value pairs. TypeScript provides Record types t

Regular expressions in TypeScript

Publish Date:2025/04/15 Views:104 Category:TypeScript

RegExp Is a regular expression used to match a fixed set of characters in a target string using TypeScript. RegExp Objects have many properties and methods. Each property has different options when pattern matching. Using regular expression

Scan to Read All Tech Tutorials

Social Media
  • https://www.github.com/onmpw
  • qq:1244347461

Recommended

Tags

Scan the Code
Easier Access Tutorial