ABOUT ME

Today
Yesterday
Total
  • ๐Ÿ“‘ typescript TIL
    ๐Ÿ–ฅ Front-end 2022. 10. 22. 18:17

    typescript๋Š” Microsoft๊ฐ€ ๊ฐœ๋ฐœํ•ด์„œ VSC๋ž‘ ์•„์ฃผ ์ž˜ ํ˜ธํ™˜๋œ๋‹ค.

     

    typescript๊ฐ€ ๊ฐœ๋ฐœ๋œ ์ด์œ ๋Š” ํƒ€์ž… ์•ˆ์ •์„ฑ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋กœ ์ธํ•œ ์žฅ์ 

    - ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•˜๋ฉด ์ฝ”๋“œ ๋ฒ„๊ทธ๊ฐ€ ํ™•์—ฐํ•˜๊ฒŒ ๊ฐ์†Œํ•œ๋‹ค.

    - ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๊ฐ์†Œํ•œ๋‹ค.

    - ์ƒ์‚ฐ์„ฑ๋„ ์ฆ๊ฐ€ํ•œ๋‹ค.

     

    javascript์—์„œ [1,2,3,4] + false ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด '1,2,3,4false'๊ฐ€ ์ถœ๋ ฅ์ด ๋œ๋‹ค.

    array์™€ boolean์„ ๋”ํ•˜์—ฌ string์ด ๋˜๋Š” ์ด์ƒํ•œ ์˜ค๋ฅ˜.

     

    javascript๋Š” ํƒ€์ž…์ด ์—‰๋ง์ด์–ด๋„ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š”๋ฐ ์ด๊ฒƒ์ด javascript์˜ ๊ฐ€์žฅ ํฐ ์˜ค๋ฅ˜ ์ค‘ ํ•˜๋‚˜.

     

     

    typescript๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฉด javascript๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ค€๋‹ค.

    ์ด ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด javascript๋กœ ์ปดํŒŒ์ผ๋˜๊ธฐ ์ „์— ์˜ค๋ฅ˜๊ฐ€ ๊ฒ€์ถœ๋˜๊ณ  ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š๋Š”๋‹ค.

     

    typescript ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ์—๋Š”

    let b : boolean = false

    ์ด๋Ÿฐ ์‹์œผ๋กœ ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๊ธฐ ๋ณด๋‹ค๋Š” typescript๊ฐ€ ํƒ€์ž…์„ ์ถ”๋ก ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

     

     

     

    const player: {
    	readonly name: string	// min.name = "์ˆ˜์ •" -> readonly์ด๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ • ๋ถˆ๊ฐ€
        age?: number
    } = {
    	name: "min"
    }
    
    if(player.age && player.age < 10) { // player.age < 10๋งŒ ์žˆ์œผ๋ฉด ์˜ค๋ฅ˜. number๊ฐ€ ์•„๋‹ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ.
    }

     

    ์œ„์˜ ์ฝ”๋“œ๋ฅผ ํด๋ฆฐํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  ์ „๊ฐœ์‹œํ‚จ ์ฝ”๋“œ.

    type Age = number
    type Player = {
    	name: string,
        age?: Age
    }
    
    const min = Player = {	// ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ
    	name: "min"
    }
    
    function playerMaker(name: string) : Player {
    	return {
        	name: string
        }
    }
    
    // == const PlayerMaker = (name: string) : Player => ({name})
    
    const min = playerMaker("min");
    min.age = 15;	// ์˜ค๋ฅ˜ X

     

     

     

    const numbers : readonly number[] = [1, 2, 3, 4];

    numbers.push ~ => ์˜ค๋ฅ˜

     

     

    Tuple

    const player : [string, number, boolean] = ["min", 1, true] => ์ตœ์†Œ ์„ธ๊ฐœ์˜ ์•„์ดํ…œ์„ ๊ฐ–๊ณ  ์ด ์ˆœ์„œ๋กœ ๊ฐ€์ ธ์•ผํ•จ์„ ์•Œ๋ ค์คŒ

    javascript์—์„œ๋Š” array๋กœ ๋ณด์ธ๋‹ค.

     

    Unknown

    let a : unknown; => ๋ณ€์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ผ์ข…์˜ ๋ณดํ˜ธ ์—ญํ• . ์–ด๋–ค ์ž‘์—…์„ ํ•˜๋ ค๋ฉด ์ด ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ๋จผ์ € ํ™•์ธํ•ด์•ผํ•˜๋Š” ์‹.

     

    if(typeof a === 'number') {
    	let b = a + 1;	// ๋ฌธ์ œ ์—†์Œ. ์ฝ”๋“œ ์ƒ์—์„œ a๋Š” number์ด๊ธฐ ๋•Œ๋ฌธ.
    }

     

    void

    function hello() {	// type: void. ๋ณดํ†ต์€ void๋ผ๊ณ  ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„ ๋จ. return์ด ์—†๋Š” ํ•จ์ˆ˜๋Š” void
    	console.log('x');
    }

     

    Never

    ํ•จ์ˆ˜๊ฐ€ ์ ˆ๋Œ€๋กœ return ํ•˜์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

    function hello(): never {
    	return "hello";	// error 
        
        throw new Error("xxxxx");	// error ๋ฐœ์ƒ X
    }

    ๋˜ํ•œ never๋Š” ํƒ€์ž…์ด ๋‘ ๊ฐ€์ง€์ผ ์ˆ˜๋„ ์žˆ๋Š” ์ƒํ™ฉ์—๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

    function hello(name: string | number) {
    	if(typeof name === "string") {
        	name
        } else if(typeof name === "number") {
        	name
        } else {
        	name	// ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„์•ผํ•˜๋Š” ์ฝ”๋“œ์ด๋ฏ€๋กœ never
        }
    }

    ๋Œ“๊ธ€

Designed by Tistory.