ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

์œ ์ €๊ฐ€ ์„ ํƒํ•œ ์•„์ดํ…œ์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜์—ฌ ํ•ด๋‹น ์•„์ดํ…œ์ด ์กด์žฌํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฌธ์ž์—ด๋กœ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค.

infoList.forEach((info: InfoType) => {
        let isSorted = false;
        for (let i = 0; i < currentSelectedSortNum; i++) {
          if (info[currentSortName].includes(currentSort[i])) {
            isSorted = true;
            break;
          }
        }

        ( ... )
        
 });

 

ํ•˜์ง€๋งŒ ์ œ๋Œ€๋กœ ๊ธฐ๋Šฅ์ด ๋™์ž‘๋˜์ง€ ์•Š์•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฝ˜์†”๋ฅผ ๋ณด๋‹ˆ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์„ธ์ง€๊ฐ€ ๋–  ์žˆ์—ˆ๋‹ค.

Element implicitly has an 'any' type because type ( ... ) has no index signature.

 

๋ฌธ์ œํ•ด๊ฒฐ

ํ•ด๋‹น ๋ฌธ์ œ๋Š” indexable ํƒ€์ž…๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ƒ‰์ธ์˜ ๋™์ž‘๋ฐฉ์‹์— ๊ด€ํ•ด ๋ชฐ๋ผ์„œ ์ƒ๊ธด ๋ฌธ์ œ์˜€๋‹ค.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผ์„ ํ•  ๋•Œ ๋ฌธ์ž์—ด๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ƒ‰์ธ์˜ ๋™์ž‘๋ฐฉ์‹์— ์˜ํ•ด ๊ฐ์ฒด์˜ ์ƒ‰์ธ์— ์ ‘๊ทผํ•  ๋•Œ ๋‚ด๋ถ€์ ์œผ๋กœ toString() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ˜•๋œ ๊ฐ’์„ ํ†ตํ•ด ์ ‘๊ทผํ•œ๋‹ค.

// ES6
let obj = {
    toString() {
        console.log('toString() called');
    }
};
let foo = {};
foo[obj] = 'Key is obj'; // toString() called
console.log(foo[obj]);
// toString() called
// Key is obj

 

ํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋˜‘๊ฐ™์ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค.

์ด์œ ์ธ ์ฆ‰์Šจ, ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ๋•Œ ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†์–ด ์•”๋ฌต์ ์œผ๋กœ any ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ด๋Š” tsconfig์˜ "noImplicitAny": true ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์ด๋‹ค.

 

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„  ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ณ(index signature)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜์—ˆ๋‹ค.

(์•„๋ž˜ ์ธํ„ฐํŽ˜์ด์Šค ์„ ์–ธ ๋œ ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ณ๋Š” 'key ๊ฐ’์€ string์ด๊ณ  ๋ฐ˜ํ™˜๊ฐ’์€ any' ์ด๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค)

export interface InfoType {
  [key: string]: any;
  id: number;
  title: string;
  client: string;
  due: string;
  count: number;
  amount: number;
  method: string[];
  material: string[];
  status: string;
}

 

Reference

https://heecheolman.tistory.com/64#%EC%A4%91%EC%B2%A9%EB%90%9C-index-signature

 

[typescript] ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ธํ„ฐํŽ˜์ด์Šค

typescript03 ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ์กด์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ผ๋Š” ๊ฐœ๋…์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋์Šต๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ผ๋Š” ์šฉ์–ด

heecheolman.tistory.com

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2024/10   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ