blog-hero-img

【React + TypeScript】イベントの型の記法には3種類あります

pen-icon2024.3.19

この記事は約2分で読めます

Profile Pic

この記事の筆者:三好アキ


🟢 専門用語なしでプログラミングを教えるメソッドに定評があり、1200人以上のビギナーを、最新のフロントエンド開発入門に成功させる。
🟢『はじめてつくるReactアプリ with TypeScript』、『動かして学ぶ!Next.js/React開発入門(翔泳社/*韓国でも出版)』著者。


▼ Amazon著者ページはこちら
amazon.co.jp/stores/author/B099Z51QF2




最初にお知らせです。

【他に類のないTypeScript + React教材】をリリースしました。

image

▼ 購入はこちらから

👉 monotein.base.shop/p/00006(Baseショップ)

👉 monotein.booth.pm/items/5611944(Boothショップ)

3種類の型の記法

React + TypeScript開発で使うイベントの型の記法には、次の3つがあるので紹介します。


1:インライン記法

2:パラメータ横に書く記法

3:イベント名の横に書く記法

1インライン記法(React + TypeScriptのイベントの型)

次のようなコードがあったとします。

// Form.tsx

const Form = () => {
    const [data, setData] = useState("")
    return (
        <form> 
            <input onChange={(e) => setData(e.target.value)}
                   type="text" 
                   required
            />
        </form>
    )
}

export default Form

functionを内部に書くこのようなインライン記法では、eに対する型は不要です。

マウスをeに乗せると、TypeScriptが次のように型の推測をしてくれています。

image

2パラメータ横に書く記法(React + TypeScriptのイベントの型)

先ほどのインラインのfunctionを、外部定義するものに変えてみましょう。

// Form.tsx

import { useState } from "react"

const Form = () => {
    const [data, setData] = useState("")

    const changeHandler = (e) => {
        setData(e.target.value)
    }

    return (
        <form> 
            <input onChange={changeHandler}
                   type="text" 
                   required
            />
        </form>
    )
}

export default Form

するとeanyになります。

しかし、先ほどのインライン記法時の型情報を次のように持ってくれば解決します。これが2つ目の記法です。

// Form.tsx

    ...

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

    return (
        ...

3名前の横に書く記法(React + TypeScriptのイベントの型)

次のように書くこともできます。これはeなどのパラメーターが複数あるときに便利な記法です

// Form.tsx

    ...

    const changeHandler: React.ChangeEventHandler<HTMLInputElement> = (e) => {
        setData(e.target.value)
    }

    return (
        ...

本記事で紹介した3つの記法はどれを使っても違いはありませんが、3つ目の記法を目にすることあまりないでしょう。


image

▼【無料フロントエンド・ガイド】は下記ページで受け取れます。

https://monotein.com/present-for-readers

Profile Pic

🟩 フロントエンド開発者入門ガイド【無料配布中】


最初にこれが知りたかった!
フロントエンド初心者が必ず押さえておきたい ― 『挫折しない勉強法』とその具体的ステップ、無料配布中。
(*名前不要・メールアドレスだけで受け取り可能です)