前提・実現したいこと
tsx
1type NameType = "hoge" | "fuga" 2 3const getButtonName = (e: React.MouseEvent<HTMLButtonElement>) => { 4 const { name } = e.currentTarget; 5 ... 6};
上記の変数name
はIDE(VSCode)が推論する型はstring型ですが、別に定義したNameType
を変数name
に付与したいです。
発生している問題・エラーメッセージ
以下は問題が発生するコードと、それに対するエラーメッセージです。
tsx
1const { name: NameType } = e.currentTarget;
'NameType' が宣言されていますが、その値が読み取られることはありません。
tsx
1const { name }: NameType = e.currentTarget;
型 'EventTarget & HTMLButtonElement' を型 'NameType' に割り当てることはできません。
試したこと
TypeScript で 分割代入 {a, b} = c を使う - Qiita
上記ページを参考に、下記のコードを書いてみました。
tsx
1const { name }: { name: NameType } = e.currentTarget;
結果、下記のエラーが表示されました。
型 'EventTarget & HTMLButtonElement' を型 '{ name: NameType; }' に割り当てることはできません。
プロパティ 'name' の型に互換性がありません。
型 'string' を型 'NameType' に割り当てることはできません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。