いつもお世話になっています。
次のコードは、return obj[abcd.key][abcd.val];
の行でエラーが出ます。
typescript
1const obj = { 2 a: { 3 b: 1, 4 }, 5 c: { 6 d: 3, 7 }, 8} 9 10type T = {key: "a", val: "b"} | {key: "c", val: "d"}; 11 12function func(abcd: T) { 13 // Element implicitly has an 'any' type because expression of type '"b" | "d"' can't be used to index type '{ b: number; } | { d: number; }'. 14 // Property 'b' does not exist on type '{ b: number; } | { d: number; }'.ts(7053) 15 return obj[abcd.key][abcd.val]; 16}
しかし、次のコードはエラーが出ません。
typescript
1const obj = { 2 a: { 3 b: 1, 4 }, 5 c: { 6 d: 3, 7 }, 8} 9 10type T = {key: "a", val: "b"} | {key: "c", val: "d"}; 11 12function func(abcd: T) { 13 switch (abcd.key) { 14 case "a": 15 return obj[abcd.key][abcd.val]; 16 case "c": 17 return obj[abcd.key][abcd.val]; 18 } 19}
1つ目のコードでエラーが出る原因は何でしょうか?そして、どのように修正すればエラーがなくなるでしょうか?教えていただけると嬉しいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。