Skip to content

Commit 17083e7

Browse files
authored
๐Ÿ”€: Udemy/Ts/section2/30 (#34)
* ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: README์„ ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: issue templates ์ƒ์„ฑ Github์—์„œ ์ž‘์„ฑํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: pr-template ์ƒ์„ฑ Github์—์„œ ์ž‘์„ฑํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: pr-template ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐ŸŒฑ: pr-template ์ˆ˜์ • Github์—์„œ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. * ๐Ÿšฉ: udemy section2์˜ 14๋ฒˆ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์‹ค์Šต์„ ํ–ˆ๋‹ค. * ๐Ÿšฉ: never ํƒ€์ž…๊ณผ throwํ•จ์ˆ˜์˜ ์—ฐ๊ด€์„ฑ ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ์˜ˆ์‹œ
1 parent e790cab commit 17083e7

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

โ€Žsrc/app.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
1-
let userInput: unknown; // any ์™€ ๋น„๊ต๊ฐ€ ๋˜๋Š” unknown Type
2-
//unknown Type์€ ์–ด๋–ค ํƒ€์ž…์ด ์‚ฌ์šฉ๋ ์ง€ ๋ชจ๋ฅผ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
3-
//any์™€์˜ ์ฐจ์ด
4-
// userName์— userInput์„ ํ• ๋‹น ํ–ˆ์ง€๋งŒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. unknown์„ any๋กœ ๊ต์ฒดํ•˜๋ฉด ํ•ด๋‹น ์—๋Ÿฌ๋Š” ์‚ฌ๋ผ์ง„๋‹ค. ์ฆ‰, ํƒ€์ž…์ด ์ •ํ™•ํžˆ ์ •ํ•ด์ง€์ง€ ์•Š์•˜์„ ๋ฟ, any์ฒ˜๋Ÿผ ์–ด๋–ค ๊ฐ’์ด๋“  ๋ฌด์ž‘์œ„๋กœ ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด์„œ typeof๋กœ ํ™•์ธ์„ ํ•ด๋ณด๋ฉด ๋งˆ์ง€๋ง‰์— ํ• ๋‹น ํ•œ ๊ฐ’์œผ๋กœ userInput์€ ๊ฐ’์ด ํ• ๋‹น ๋˜์–ด ์žˆ๋‹ค.literal Type์„ ํ™•์ธํ•˜๋ฉด ์—ฌ์ „ํžˆ unknown์œผ๋กœ ํ• ๋‹น์ด ๋œ๋‹ค.
1+
let userInput: unknown;
52

63
let userName: string;
74
userInput = 5;
85
userInput = 'Max';
96

107
console.log(typeof userInput);
118

12-
//userName = userInput; //error ts(2322) -> 'unknown' ํ˜•์‹์€ 'string' ํ˜•์‹์— ํ• ๋‹นํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
13-
//๊ทธ๋ ‡๋‹ค๋ฉด userName์— userInput ๊ฐ’์„ ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ์ง€๋‚œ ๊ฐ•์˜์—์„œ๋„ ๊ณ„์† ์–ธ๊ธ‰ํ–ˆ๋“ฏ if๋ฌธ์ด๋ผ๋Š” ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด์„œ userName์˜ ํƒ€์ž…์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์กฐ์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
14-
159
if (typeof userInput === 'string') {
1610
userName = userInput;
1711
}
1812

19-
//๊ฒฐ๋ก ์ ์œผ๋กœ any๋ณด๋‹ค unknown์œผ๋กœ ํƒ€์ž…์„ ํ• ๋‹นํ•˜๊ฒŒ ๋˜๋ฉด if๋ฌธ์œผ๋กœ ๊ฒ€์ˆ˜,๊ฒ€ํ† ๋ฅผ ํ†ตํ•ด์„œ ๊ฐ’์„ ์žฌํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์‹œ์ ์œผ๋กœ๋„ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ ์œผ๋กœ๋„ ํ›จ์”ฌ ์•ˆ์ •์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
13+
function generateError(message: string, code: number): never { //:never
14+
throw { message: message, errorCode: code };
15+
} //generateError๋Š” neverํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด์œ ๋Š” throw ๋•Œ๋ฌธ์ธ๋ฐ ์ ˆ๋Œ€์ ์œผ๋กœ ๊ฐ’์ด ๋ณ€ํ•˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ neverํƒ€์ž…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
16+
//never ํƒ€์ž…์€ ์–ด๋– ํ•œ ๊ฐ’๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด ํƒ€์ž…์€ ํ•จ์ˆ˜๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜์ง€ ์•Š๊ณ  ํ•ญ์ƒ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๊ฑฐ๋‚˜ ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ ธ ๋๋‚˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค. ์˜คํ•ดํ•˜์ง€ ๋ง์•„์•ผํ•  ๊ฒƒ์€ literal type์œผ๋กœ ํ™•์ธ์„ ํ•˜๋ฉด void๋กœ ์„ ์–ธ์ด ๋˜์–ด์žˆ์ง€๋งŒ throw๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌด์กฐ๊ฑด์œผ๋กœ never๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์•”๋ฌต์ ์œผ๋กœ never๋ฅผ ๋ฐ˜ํ™˜์€ ํ•˜์ง€๋งŒ neverํƒ€์ž…์ž„์„ ์ฝ”๋“œ์— ๋ช…์‹œํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
17+
18+
const resultError = generateError('An error occurred!', 500);
19+
console.log('resultError: ', resultError); //๋ณธ๋ž˜ ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜๋ผ๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค.
20+
//ํ•˜์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒƒ์ด ์—†๋‹ค. ์ด์œ ๋Š” generateError๋Š” never ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ์ด ์ค‘๋„ ์ •์ง€๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
21+
//์ฐธ๊ณ ๋กœ throw๋Š” try,catch๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฌด์‹œํ•˜์ง€ ์•Š๊ณ  ์ค‘๋„ ์ •์ง€๊ฐ€ ๋œ๋‹ค.

0 commit comments

Comments
ย (0)