๐ Literal Type
ํ์
์ง์ ์ string, number ๊ฐ์ ์์ํ์
๋ง ํ ๋นํ ์ ์๋ ๊ฒ์ด ์๋๋ค.
๊ฐ๋ฐ์๊ฐ ์ง์ ํ ๊ธ์๋ ์ซ์ ๋ค์ ํ์
์ผ๋ก ์ง์ ํ ์ ์๋ค.
1 2
| let john: "Texas"; let kim: 33;
|
- ์ด์ john์๋ โTexasโ๋ผ๋ ๊ธ์๋ง ํ ๋น๋ ์ ์๊ณ kim์๋ 33์ด๋ผ๋ ์ซ์๋ง ํ ๋น๋ ์ ์๋ค.
๐จ ํ์
์คํฌ๋ฆฝํธ const
1
| const name = "kim" | "loco";
|
ํ์
์คํฌ๋ฆฝํธ๋ ๋ณํ ์ ์๋ ์ค์ํ ์ ๋ณด๋ฅผ ์์ ๊ฐ์ด ํํํ ์ ์๋ค. ๋ฌผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ถ๊ฐ๋ฅํ๋ค.
โ๏ธ Literal Type ์ฃผ์์ฌํญ
1 2 3 4 5 6 7 8 9
| const user = { name: "kim", };
function foo(a: "kim") { }
foo(user.name);
|
- ์ ์์์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ user ๊ฐ์ฒด์ name ํ๋กํผํฐ์ ํ์
์ string์ธ๋ฐ fooํจ์ ๋งค๊ฐ๋ณ์ a์ ํ์
์ Literal Type์ธ โkimโ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ object ๋ง๋ค ๋ ํ์
์ ๋ฏธ๋ฆฌ ์ ํํ์ฌ๋ง๋ค๊ฑฐ๋ as const๋ฅผ object ์๋ฃํ์ ๋ถํ์ ์ฌ์ฉํ๋ค.
๐ฆ as const
1 2 3 4 5 6 7 8 9
| type Lang = "JavaScript" | "TypeScript" | "Python"; function setLang(lang: Lang) { }
setLang("JavaScript");
let language = "JavaScript"; setLang(language);
|
- ๋ณ์์ ํ ๋นํ๋ ์๊ฐ language ์๋ณ์๊ฐ ํ์
์ถ๋ก ์
string
์ผ๋ก ํ์๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์
1. ํ์
์ ์ธ์ language์ ๊ฐ๋ฅํ ๊ฐ ์ ํ
1 2
| let lang: Lang = "JavaScript"; setLang(lang);
|
2. const ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ก ํํ
1 2
| const lang = "JavaScript"; setLang(lang);
|
- const ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์
์ฒด์ปค์๊ฒ lang์ ๋ณ๊ฒฝํ ์ ์๋ค๊ณ ์๋ ค์ค๋ค.
- ํ์
์คํฌ๋ฆฝํธ๋ lang์ ๋ํด ๋ ์ ํํ ํ์
์ธ โJavaScriptโ๋ก ์ถ๋ก ํ ์ ์๋ค.
1 2 3 4 5 6
| function panTo(where: [number, number]) { } const loc = [10, 20];
panTo(loc);
|
- ํํ ์ฌ์ฉ ์ ์ฃผ์์ฌํญ์ const๋ก ์ ์ธํ์ฌ๋ ํ์
์คํฌ๋ฆฝํธ๊ฐ ๊ธธ์ด๋ฅผ ์ ์ ์๋ ์ซ์์ ๋ฐฐ์ด๋ก ์ถ๋ก ํ๋ค.
const loc: [number, number] = [10, 20]
๋ก ์๋๋ฅผ ์ ํํ ํ์
ํ ์ ์๋๋ก ํ์
์ ์ธ์ ์ ๊ณตํ๋ค.
const ์ as const ์ฐจ์ด
- const ๋ ๋จ์ง ๊ฐ์ด ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๊ฐ ๋ณํ์ง ์๋ ์์ ์์์ด๋ค.
- as const(์์ ๋ฌธ๋งฅ ์ ๊ณต)์ ๊ทธ ๊ฐ์ด ๋ด๋ถ๊น์ง ๊น์ ์์๋ผ๋ ์ฌ์ค์ ํ์
์คํฌ๋ฆฝํธ์๊ฒ ์๋ ค์ค๋ค.
const loc = [10, 20] as const
ํ์
์ด readonly [number ,number]
1 2 3
| function panTo(where: readonly [number, number]) {}; const loc = [10,20] as const; panTo(loc);
|
- ํ๊ฐ์ง ๋จ์ ์ผ๋ก๋ ๋ง์ฝ ํํ์ ์ธ๋ฒ์งธ ์์ ์ถ๊ฐ์ ์ค๋ฅ๊ฐ ํ์
์ ์๊ฐ ์๋ ํธ์ถ๋๋ ๊ณณ์์ ๋ฐ์ํ๋ค.