Open11
React写経
写経リポジトリ
React Todo
React Todo
useState
を引数として渡すときの型宣言は、Dispatch<SetStateAction<String>>
である。
引数として渡す場合は、関数でラップした方がスマートなのでそちらで考える。
import { Dispatch, SetStateAction } from "react";
function FilterButton({setFilter: Dispatch<SetStateAction<String>>}) {
}
React Todo
ObjectのKeyを一律Enumで列挙したい場合の書き方
type Filter = "ALL" | "Active" | "Completed"
const FILTER_MAP: { [key in Filter]: (task: TodoProps) => boolean } = {
ALL: () => true,
Active: (task: TodoProps) => !task.completed,
Completed: (task: TodoProps) => task.completed,
};
Object.keys
は型が外れてしまうので、Type Assertionする。他に良い方法を探し中
const FILTER_NAMES = Object.keys(FILTER_MAP) as Filter[];
-
useRef
には型を与える -
undefined
になるので、?
で対応させておく
const hogeFieldRef= useRef<HTMLInputElement>(null);
hogeFieldRef.current?.focus()