๐ย Reference
๐ย Chapter
Literal narrowing
๋ ์ข์ ํ์ (narrowed type)์ผ๋ก ์ ์ธํ ๊ฒ์ผ๋ก ์ถ๋ก ํ๋ค.
์์ 1
const a = "Hello World"
let b = "Hello World"
const c: string = "Hello World"
b
์ย c
์ string ํ์
์ด ๋ง์ง๋ง,ย a
์ย "Hello World"
ํ์
์ด๋ค.b
ย ๋ณ์๋ย let
์ผ๋ก ์ ์ธ๋์ด ์ฌํ ๋น๋ ์ ์์ ๊ฒฝ์ฐ ์ด๋ค ๋ฌธ์์ด์ด๋ ๋ฃ์ ์ ์์ผ๋ฉฐ ๊ทธ ๊ฒฝ์ฐ์ ์๊ฐ ๋ฌดํ๋์ด๋ค.c
ย ๋ณ์๋ ๋ช
์์ ์ผ๋ก string ํ์
์ผ๋ก ์ ์ธํ์ผ๋ฏ๋ก ๊ทธ๋ฅ string ํ์
์ด๋ค.a
์ ๊ฒฝ์ฐ๋ ์กฐ๊ธ ์ด์ผ๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋ค. ์ปดํ์ผ๋ฌ๋ ์ด ๋ณ์๋ฅผย string
์ด ์๋ ์กฐ๊ธ ๋ ์ข์ ํ์
(narrowed type)์ผ๋ก ์ ์ธํ ๊ฒ์ผ๋ก ์ถ๋ก ํ๋ค.a
์ ํ์
์ string์ด ์๋๋ผ stringํ์
์ ์ขํ ๋ง๋ ย string literal type์ด๋ค."Hello World"
๋ง์ ํ์ฉํ๋ ํ์
์ ์ ์ธํ๋ค๋ ๋ป์ด๋ค.์์ 2
type HelloWorldType = "Hello World" // literal type
let a: HelloWorldType = "Hello World" // ok
a = "hahaha" // compile error: "hahaha"๋ "Hello World"๊ฐ ์๋๊ธฐ ๋๋ฌธ.
let
์ผ๋ก ์ ์ธ๋ ๋ณ์๋ย "Hellow World"
ํ์
๋ง์ ํ์ฉํ๋๋ก ๋ง๋ค ์๋ ์๋ค.