-
Notifications
You must be signed in to change notification settings - Fork 0
๐ [2์ฅ] ํ์ ์งํฉ์ ๊ฐ๋ ๊ณผ ํ์ ํธํ์ฑ
const metaData: MetadataProps = {
author: "ํ์ค",
createdAt: 2024-03-24,
chapter: 2,
description: "ํ์
์งํฉ์ ๊ฐ๋
๊ณผ ํ์
ํธํ์ฑ"
}
const { chapter, description } = metaData;
https://ts.winterlood.com/ ์ฌ๊ธฐ ์ฐธ๊ณ ํ์ด์!
** ํ์
์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ํฌํจํ๋ ์งํฉ
์ด๋ค.**
Note
์งํฉ์ด๋? โ ๋์ผํ ์์ฑ์ ๊ฐ๋ ์ฌ๋ฌ ๊ฐ์ ์์๋ค์ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ ๋จ์
ex) number ํ์
์ -20, 3, 2, 4, 123, 0.12, โ ๋ฑ์ ๊ฐ์ ๋ฌถ์ด ๋์ ์งํฉ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ค์ง ํ๋์ ๊ฐ๋ง ํฌํจํ๋ Number Literal ํ์
์?
let num: 20 = 20;
20 ์ด๋ผ๋ Number Literal ํ์ ์ด ์กด์ฌํ๋ค๋ฉด, ์ด ํ์ ์ ๋ฑ ํ๋์ ๊ฐ(20)๋ง์ ํฌํจํ๋ ์์ฃผ ์์ ์งํฉ์ด๋ค.
๊ทธ๋ฆฌ๊ณ 20์ด๋ผ๋ Number Literal ํ์
์, Numberํ์
์ ์ํ๋ ๊ฐ์ด๋ค.
โ ๋ชจ๋ Number Literal ํ์
์ Number์ ๋ถ๋ถ ์งํฉ
์ด๋ค.
์ด ๋ number ํ์
์ ์ํผํ์
(๋ถ๋ชจํ์
)์ด๊ณ , number literal ํ์
์ ์๋ธํ์
(์์ํ์
)์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๊ฐ๋ ์ ํ์ ๊ณ์ธต๋์ ์ ์ฉ์ด ๋๋ค.
ํ์ ํธํ์ฑ์ด๋, ์ด๋ ํ ํ์ ์ ๋ค๋ฅธ ํ์ ์ผ๋ก ์ทจ๊ธํด๋ ๊ด์ฐฎ์์ง ํ๋จํ๋ ๊ฒ์ ๋งํ๋ค. ํ์ ํธํ์ฑ์ ํ์ ๊ณ์ธต๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋จํ ์ ์๋ค.
ํ์ ์คํฌ๋ฆฝํธ๋ ์ํผํ์ ์ ๊ฐ์ ์๋ธํ์ ์ ๊ฐ์ผ๋ก ์ทจ๊ธํ๋ ๊ฒ์ ํ์ฉํ์ง ์๋๋ค. ๋ฐ๋๋ก, ์๋ธํ์ ์ ๊ฐ์ ์ํผํ์ ์ ๊ฐ์ผ๋ก ํธํ ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ ์๋ธํ์
โ ์ํผํ์
์ผ๋ก ํธํํ๋ ๊ฒ์ ์
์บ์คํ
์ด๋ผ๊ณ ํ๋ค.
๋ฐ๋๋ก ์ํผํ์
โ ์๋ธํ์
์ผ๋ก ํธํํ๋ ๊ฒ์ ๋ค์ด์บ์คํ
์ด๋ผ๊ณ ํ๋ค.
let num1: number = 10;
let num2: 10 = 10;
num1 = num2; // โ
OK
num2 = num1; // โ NO
-
never
์ ๊ณต์งํฉ์ผ๋ก, ๋ชจ๋ ํ์ ์ ์๋ธํ์ ์ด๋ค. ๋ฐ๋ผ์ neverํ์ ์ ๋ชจ๋ ํ์ ์ผ๋ก ์ ์บ์คํ ์ด ๊ฐ๋ฅํ๋ค.
// never ํ์
์ ๋ชจ๋ ํ์
์ ์๋ธํ์
์ด๋ฏ๋ก, ๋ค๋ฅธ ํ์
์ผ๋ก ๋ณํ๋ ์ ์์ด์ ์๋ฏธ์์ผ๋ก๋ ์ฌ๋ฐ๋ฅธ ์ฝ๋์ด๋ค.
ํ์ง๋ง never ํ์
์ด ๊ฐ์ง ์ ์๋ ์ ์ผํ ๊ฐ์ undefined์ด๋ฉฐ, ๊ทธ ์ธ์ ๊ฐ์ ๊ฐ์ง ์ ์๊ธฐ ์๋ค.
๋ฐ๋ผ์ ์ค์ ๋ก๋ ์ฌ์ฉํ ์ ์์ด์ ํ ๋น ์ค๋ฅ๊ฐ ๋ํ๋ ํ์
์ค๋ฅ๊ฐ ๋๋์ง ์ค์ ๋ก ํ์ธ์ด ์ด๋ ต๋ค.
let neverVar: never;
let a: number = neverVar; // never -> number
let b: string = neverVar; // never -> string
let c: boolean = neverVar; // never -> boolean
let d: null = neverVar; // never -> null
let e: undefined = neverVar; // never -> undefined
let f: [] = neverVar; // never -> Array
let g: {} = neverVar; // never -> Object
// ํจ์ ์์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฌดํ๋ฃจํ๋ก ๋์ํ๊ฒ ๋๋ฉด never ํ์
์ ์ฌ์ฉ ๊ฐ๋ฅ
const neverFunc = (): never => {
while(true){}
}
let num:number = neverFunc(); // ์
์บ์คํ
let str:string = neverFunc();
let bool:boolean = neverFunc()
- ๋ฐ๋๋ก, ์ด๋ค ํ์ ๋ neverํ์ ์ผ๋ก ๋ค์ด์บ์คํ ํ ์ ์๋ค.
let a: never = 1; // number -> never โ
let b: never = "hello"; // string -> never โ
let c: never = true; // boolean -> never โ
let d: never = null; // null -> never โ
let e: never = undefined; // undefined -> never โ
let f: never = []; // Array -> never โ
let g: never = {}; // Object -> never โ
-
unknown
์ ๋ชจ๋ ํ์ ์ ๋ถ๋ถ์งํฉ์ผ๋ก ๊ฐ๋ ํ์ ์คํฌ๋ฆฝํธ ์ ์ฒด ์งํฉ์ด๋ค. ๋ชจ๋ ํ์ ์ unknown์ผ๋ก ์ ์บ์คํ ํ ์ ์๋ค.
๋, ํ๋ก์ ํธ ์งํํ๋ฉฐ ํ์ ํธํ์ฑ์ ๊ณ ๋ คํ์ง ์๊ณ ํ์ ๋จ์ธ์ ์ฌ์ฉํ๋ค ์ผ์ด๋ฌ๋ ์ค๋ฅ๋ฅผ ์งง๊ฒ๋๋ง ๊ณต์ ํด๋ด ๋๋ค.
const def = 'string' as number; // ์ค๋ฅ ๋ฐ์ - Conversion of type 'string' to type 'number' may be a mistake because neither type sufficiently overlaps with the other.
- ํ์
๋จ์ธ์๋ ์กฐ๊ฑด์ด ์์ต๋๋ค.
-
A as B
๋ก ํํํ์ ๋ A๊ฐ B์์ํผํ์
์ด๊ฑฐ๋ B๊ฐ A์์ํผํ์
์ด์ด์ผ๋ง ํ์ ๋จ์ธ์ด ๊ฐ๋ฅํฉ๋๋ค.
-
const def = 'string' as unknown as number;
- ๊ถ์ฅ๋์ง๋ ์๋ ์ฌ์ฉ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ๋ค์ ๐ญ๐ญ
โจ๐ ๋ฌธ์ ๋ชจ์ ๐โจ
๐ [2์ฅ] enum์ ์ฌ์ฉํด์ผ ํ ๊น?
๐ [2์ฅ] ํ์
์งํฉ์ ๊ฐ๋
๊ณผ ํ์
ํธํ์ฑ
๐ [2์ฅ] ๋งต๋ ํ์
์ด ๋ญ๊น?
๐ [2์ฅ] Type๊ณผ Interface๋ ๊ฐ๊ฐ ์ธ์ ์ฌ์ฉํ๋ ๊ฑธ๊น? ์ ๋ํ ์๊ฒฌ
๐ [3์ฅ] ์ธ๋ฑ์ค๋ ์์ธ์ค ํ์
์์ ์ค๋ฅ ์ ๋ณด~!
๐ [4์ฅ] ํ์
์ขํ๊ธฐ์ ๋ฐฉ์(ํ์
๊ฐ๋vs ํ์
๋จ์ธ)