Reactでアプリケーションを作っており、投稿フォームと編集フォームを共通化したいと思ったのですが、TypeScriptの型エラーで躓いています。
postQuote関数とupdateQuote関数のどちらかをmutate
で受け取り、編集の場合には初期値であるinitialQuote
を受け取るフォームコンポーネントを作成しました。
mutate
関数をonSubmit
で実行したいのですが、mutate
の型が特定できず、コンパイルエラーが発生してしまいます。
プリミティブな型ならtypeof
演算子で型チェックを行うことができますが、関数の場合どうすればよいのでしょうか?
ご存知の方いらっしゃいましたら教えて頂けると助かります。よろしくお願いいたします。
typescript
1interface Props { 2 initialQuote?: Quote; 3 mutate: 4 | ((postQuoteInput: PostQuoteInput) => Promise<boolean>) 5 | ((updateQuoteInput: UpdateQuoteInput, id: number) => Promise<boolean>); 6} 7 8const QuoteFrom: React.VFC<Props> = ({ initialQuote, mutate }) => { 9 const onSubmit = async (data) => { 10 // mutateの型を特定できない 11 const success = await mutate(data); 12 if (success) { 13 ... 14 } 15 }; 16 17 return ( 18 <> 19 <form onSubmit={onSubmit}> 20 ... 21 </form> 22 </> 23 ); 24}; 25 26export default QuoteFrom;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/14 07:17
2021/05/14 10:58