前提・実現したいこと
tsx
1const [string, setString] = useState("");
上記のstring
stateを""
か"hoge"
だけsetStateできるようにしたいです。
言い方を換えれば、""
と"hoge"
以外はstring
stateにsetStateできないようにしたいです。
発生している問題・エラーメッセージ
現状は下記のコードになっています。
tsx
1const [string, setString]: [ 2 "" | "hoge", 3 React.Dispatch<React.SetStateAction<string>> 4 ] = useState("");
エラーメッセージは下記の通りです。
型 '["", Dispatch<SetStateAction<"">>]' を型 '["" | "hoge", Dispatch<SetStateAction<string>>]' に割り当てることはできません。 型 'Dispatch<SetStateAction<"">>' を型 'Dispatch<SetStateAction<string>>' に割り当てることはできません。 型 'SetStateAction<string>' を型 'SetStateAction<"">' に割り当てることはできません。 型 'string' を型 'SetStateAction<"">' に割り当てることはできません。
該当のソースコード
tsx
1const [string, setString]: [ 2 "" | "hoge", 3 React.Dispatch<React.SetStateAction<string>> 4 ] = useState("");
試したこと
下記の通りtypeを設定しました。
tsx
1type hogeType = { 2 string: "" | "hoge"; 3 setString: React.Dispatch<React.SetStateAction<string>>; 4}; 5 6const [string, setString]: hogeType = useState("");
すると、下記のエラーが表示されました。
型 '[string, Dispatch<SetStateAction<string>>]' を型 'hogeType' に割り当てることはできません。 型 'hogeType' は配列型ではありません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/25 13:22
2020/05/25 13:33