前提・実現したいこと
TypeScriptで型付けしたObjectの値を取り出したいのですがエラーが表示されます。
発生している問題・エラーメッセージ
Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'foodStuffType'. No index signature with a parameter of type 'string' was found on type 'foodStuffType'. TS7053 (日本語訳:要素は暗黙のうちに 'any' 型を持っています。なぜなら、型 'string' の式は型 'foodStuffType' をインデックス化するために使用できないからです。 型 'foodStuffType' には 'string' 型のパラメータを持つインデックスシグネチャは見つかりませんでした。 TS7053 )
該当のソースコード
指定した要素の数字が0のもの以外を抽出する関数です。filter関数で取り出したitemの型をanyにした場合は当然?ですが動きます。
ESLintに怒られてcommitできないのでanyを使わずに動かせるようにしたいです。
const zeroCutFilter = ( cutFilter: foodStuffType[], //① targetElm: string //② ): foodStuffType[] => { const removeZero = cutFilter.filter((item: foodStuffType) => item[targetElm] !== 0); return removeZero; };
① export interface foodStuffType { FoodGroup: number; FoodNumber: string; id: number; Name: string; VitaminA: number; VitaminC: number; ... }
② targetElmの中身は①と合致した要素の文字列、"VitaminC" や "ViataminA" が格納されています。
型エラーを起こさずにVitaminAやVitaminCの値を取得さえできればここの処理はクリアできるのですが上手くいきません。どなたかお助けを。
エラーが生じている行
const removeZero = cutFilter.filter((item: foodStuffType) => item[targetElm] !== 0);
item[targetElm]に対してエラーが発生しており上記のエラーが表記されます。
試したこと
item.VitaminCなどのようにKeyを指定した場合は動きます。
回答1件
あなたの回答
tips
プレビュー