TIL/TypeScript

ํƒ€์ž… ์‹œ์Šคํ…œ (Type System)

"์œ ๋‹ˆ" 2023. 12. 1. 14:19

 

๐Ÿ’ก ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ž€? 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์•„์‹œ๋‹ค์‹œํ”ผ(?) ์ •์  ํƒ€์ž…์„ ๋ช…์‹œํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜์˜ ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„ํ•œ ๋ชฉ์ ์„ ๋”์šฑ ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ๋‹ค๋ฃจ๋Š” 'ํƒ€์ž…'์˜ ์ข…๋ฅ˜์—๋Š” ์–ด๋–ค๊ฒƒ๋“ค์ด ์žˆ์„๊นŒ์š”? 

 

๐Ÿ’ก ํƒ€์ž…์˜ ์ข…๋ฅ˜

ํƒ€์ž… ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํƒ€์ž…์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ผ๊ณฑ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์›์‹œํƒ€์ž…๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. 

 

null, undefined, boolean, string, number, bigint, symbol

 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ดˆ๊นƒ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ณ€์ˆ˜ ์„ ์–ธ์—๋Š” ๊ตณ์ด ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•„๋„, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํƒ€์ž…์„ string์œผ๋กœ ์ถ”๋ก ํ•˜๊ณ  ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. 

let singer = "Insoone";

 

 

๋˜ํ•œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด์— ์–ด๋–ค ๋ฉค๋ฒ„ ์†์„ฑ์ด ์กด์žฌํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์–ด๋–ค ๋ณ€์ˆ˜๊ฐ€ 'string' ํƒ€์ž…์„ ๊ฐ€์กŒ๋‹ค๋ฉด 'string' ํƒ€์ž…์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ž‘์—…์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

 

์˜ˆ๋ฅผ๋“ค์–ด, ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด flower ๋ณ€์ˆ˜๋Š” string ํƒ€์ž…์ด๊ณ , length ์†์„ฑ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ push๋Š” ๋ฐฐ์—ด์— ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์—๋Ÿฌ๊ฐ€ ๋œจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

let flower = 'Rose'
flower.length; //ok

flower.push('!') // Error

 

 

๐Ÿ’ก ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์˜ค๋ฅ˜ 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ์˜ค๋ฅ˜๋Š” ํฌ๊ฒŒ '๊ตฌ๋ฌธ ์˜ค๋ฅ˜, ํƒ€์ž… ์˜ค๋ฅ˜' ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๊ตฌ๋ฌธ ์˜ค๋ฅ˜๋Š” ์ฝ”๋“œ์˜ ๋ฌธ๋ฒ•์ด ์ž˜ ๋ชป ๋˜์—ˆ๊ฑฐ๋‚˜ ์ฝ”๋“œ ๋ธ”๋Ÿญ, ์„ ์–ธ, ํ‘œํ˜„์‹ ๋“ฑ ๊ตฌ๋ฌธ์ ์ธ ์ธก๋ฉด์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ฒƒ์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. 

ํƒ€์ž… ์˜ค๋ฅ˜๋Š” ๋ง ๊ทธ๋Œ€๋กœ ํƒ€์ž…์ด ์ผ์น˜ํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ๋‚˜ํƒ€๋‚˜๋ฉฐ, ์ด ๋•Œ๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์ถฉ๋Œํ•˜๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋‚  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

๐Ÿ’กํƒ€์ž… ์• ๋„ˆํ…Œ์ด์…˜ (Annotaion) 

Annotate๋Š” ์ฃผ์„์„ ๋‹จ๋‹ค๋Š” ์˜๋ฏธ๋กœ, Annotation ๋˜ํ•œ ์ฃผ์„์ด๋‚˜ ํƒœ๊ทธ๋ฅผ ํ†ตํ•ด ๋ถ€๊ฐ€์  ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—๋Š” ํƒ€์ž… ์• ๋„ˆํ…Œ์ด์…˜์ด ์กด์žฌํ•˜๋ฉฐ, ํƒ€์ž… ์• ๋„ˆํ…Œ์ด์…˜์€ ์ดˆ๊นƒ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ ๋„ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

let car: string;
car = "Volvo";

 

์œ„ ์ฝ”๋“œ๊ฐ€ ํƒ€์ž…์• ๋„ˆํ…Œ์ด์…˜์ด ์ ์šฉ๋œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. 

 

 

 

 

 

 

 

 

์ถœ์ฒ˜: ๋Ÿฌ๋‹ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ

'TIL > TypeScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด  (2) 2023.12.07
์œ ๋‹ˆ์˜จ๊ณผ ๋ฆฌํ„ฐ๋Ÿด (Union & Literal)  (0) 2023.12.01