Skip to content

Commit 88e82b8

Browse files
committed
๐Ÿšฉ: object์˜ key, value์˜ ๊ฐ’์„ ์ปจํŠธ๋กค ํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜ ๊ตฌํ˜„ ๋ฐ ์‹ค์Šต
1 parent 5cb0e52 commit 88e82b8

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

โ€Ždist/app.jsโ€Ž

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,11 @@ function countAndDescribe(element) {
1414
// return ['Max', 'Tom']; //error ๋ฐœ์ƒ : ํƒ€์ž…์„ ๋ช…์‹œํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๋‹ค.
1515
}
1616
console.log(countAndDescribe('Hi, there!'));
17+
//๊ฐ์ฒด key, value์— ํ•ฉ๋‹นํ•œ ts Generics
18+
function extractAndConvert(obj, key) {
19+
return 'Value: ' + obj[key];
20+
}
21+
// T : { name: 'Max' }, U : 'name'
22+
const value = extractAndConvert({ name: 'Max' }, 'name');
23+
console.log(value);
24+
// ์œ„์˜ ์„ค๋ช…์ด ๋‹ค์†Œ ๋ณต์žกํ•˜๋‹ค. ์šฐ์„  U๋Š” ๊ฐ์ฒด์˜ key, value ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  U๋Š” T์—์„œ key์— ํ•ด๋‹น๋˜๋Š” ๊ฐ’์„ ์ƒ์†๋ฐ›์•„ keyํƒ€์ž…์„ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค. ์ฆ‰, name ๋ถ€๋ถ„์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค. return ๊ฐ’์˜ ๋ฐ˜ํ™˜์„ ๋ณด๋ฉด object์˜ ํ•ด๋‹น key๊ฐ’์„ ๋„์ถœํ•˜๋ ค๋Š” ์˜๋„์ด๋‹ค. ๋”ฐ๋ผ์„œ, console.log(value)์˜ ๊ฐ’์€ Max๊ฐ€ ๋œ๋‹ค.

โ€Žsrc/app.tsโ€Ž

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,17 @@ function countAndDescribe<T extends Length>(element: T): [T, string] { //๋ฐ˜ํ™˜
2424
// return ['Max', 'Tom']; //error ๋ฐœ์ƒ : ํƒ€์ž…์„ ๋ช…์‹œํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๋‹ค.
2525
}
2626

27-
console.log(countAndDescribe('Hi, there!'));
27+
console.log(countAndDescribe('Hi, there!'));
28+
29+
//๊ฐ์ฒด key, value์— ํ•ฉ๋‹นํ•œ ts Generics
30+
function extractAndConvert<T extends object, U extends keyof T>(
31+
obj: T,
32+
key: U
33+
) {
34+
return 'Value: ' + obj[key];
35+
}
36+
// T : { name: 'Max' }, U : 'name'
37+
const value = extractAndConvert({ name: 'Max' }, 'name');
38+
console.log(value);
39+
40+
// ์œ„์˜ ์„ค๋ช…์ด ๋‹ค์†Œ ๋ณต์žกํ•˜๋‹ค. ์šฐ์„  U๋Š” ๊ฐ์ฒด์˜ key, value ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  U๋Š” T์—์„œ key์— ํ•ด๋‹น๋˜๋Š” ๊ฐ’์„ ์ƒ์†๋ฐ›์•„ keyํƒ€์ž…์„ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค. ์ฆ‰, name ๋ถ€๋ถ„์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค. return ๊ฐ’์˜ ๋ฐ˜ํ™˜์„ ๋ณด๋ฉด object์˜ ํ•ด๋‹น key๊ฐ’์„ ๋„์ถœํ•˜๋ ค๋Š” ์˜๋„์ด๋‹ค. ๋”ฐ๋ผ์„œ, console.log(value)์˜ ๊ฐ’์€ Max๊ฐ€ ๋œ๋‹ค.

0 commit comments

Comments
ย (0)