ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค (Interface)
    โŒจ๏ธ conceptualization/Typescript 2022. 9. 9. 20:30
    728x90

     

    ๐Ÿง  ์ €๋ฒˆ์žฅ์• ์„œ ๋ณด์•˜๋˜ ํƒ€์ž…์ด ๋ช…์‹œ๋œ ํ•จ์ˆ˜ ๊ตฌ์กฐ

    function aboutyelim(age: number): {
      myname: string;
      age: number;
      gender: string;
      hobby: string;
      married: boolean;
    } {
      return {
        myname: "yelim",
        age: 28,
        gender: "female",
        hobby: "playingguitar",
        married: false,
      };
    }

     

     

     

     

    ๐Ÿ“Œ interface ๊ตฌ์กฐ๋กœ ๋ฐ”๊พธ์–ด ์ฃผ์ž !

    - interface ์˜ ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค.
    ๐Ÿ”‘ ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์€ interface์˜ 'i' ๋ฅผ ๋”ฐ์„œ 
    'I'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋„ค์ด๋ฐ์ปจ๋ฒค์…˜์„ ๋”ฐ๋ฅด์ง€๋งŒ typescript์—์„œ๋Š” 'I'๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š”๊ฒƒ์„ ์›์น™์œผ๋กœ ํ•˜๊ณ ์žˆ๋‹ค.

     

    interface Aboutme {
      myname: string;
      age: number;
      gender: string;
      hobby: string;
      married: boolean;
    }
    
    function aboutyelim(age: number): Aboutme {
      return {
        myname: "yelim",
        age: 28,
        gender: "female",
        hobby: "playingguitar",
        married: false,
      };
    }
    

     

     

     

     

     

     

    Optional ๊ธฐํ˜ธ ๋ฌผ์Œํ‘œ(?)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ missing error ํ•ด๊ฒฐํ•˜๊ธฐ

    ๋งŒ์•ฝ return ๊ฐ’์ค‘ age ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์ œ๊ฑฐํ•œ๋‹ค๋ฉด ?

     

    ๐Ÿ“Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ missing error๊ฐ€ ๋ฐœ์ƒ๋œ๋‹ค.

     

     

    ๐Ÿ“Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ ํƒ์  ํ”„๋กœํผํ‹ฐ(optional property) ์‚ฌ์šฉ์œผ๋กœ ํ•ด๊ฒฐ ํ• ์ˆ˜ ์žˆ๋‹ค.

    interface Aboutme {
      myname: string;
      age?: number; // ์ด์™€๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์žˆ์–ด๋„, ์—†์–ด๋„ ๋˜๋Š” ๊ฐ’์œผ๋กœ ๋งŒ๋“ค์–ด ๋ฒ„๋ฆฌ์ž
      gender: string;
      hobby: string;
      married: boolean;
    }
    
    function aboutyelim(age: number): Aboutme {
      return {
        myname: "yelim",
        gender: "female",
        hobby: "playingguitar",
        married: false,
      };
    }
    
    
    

     

     

     

    interface์˜ ์ตœ๋Œ€์˜ ๊ฐ•์  -> ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ

    interface Aboutme {
      myname: string;
      age: number;
      gender: string;
      hobby: string;
      married: boolean;
    }
    
    function aboutyelim(age: number): Aboutme {
      return {
        myname: "yelim",
        age: 28,
        gender: "female",
        hobby: "playingguitar",
        married: false,
      };
    }
    
    // ๐Ÿ“Œ ์ •๋ณด๋„ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด ์ธ์ž๊ฐ’์œผ๋กœ ๋ณด๋‚ด์ค€๋‹ค
    const who = {
        myname: "yelim",
        age: 28,
        gender: "female",
        hobby: "playingguitar",
        married: false,
      };
    
      // ๐Ÿ“Œ ํŒŒ๋ผ๋ฏธํ„ฐ human์˜ ํƒ€์ž…์„ Aboutme ๋กœ ์ง€์ •ํ•จ์œผ๋กœ์จ ์ง€์ •๋œ interface์˜ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    function aboutyelim2(human: Aboutme): void {} 
    
    aboutyelim2(who);
    

     

     

     

     

    ๋ฉ”์†Œ๋“œ๋„ interface ์•ˆ์—์„œ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ๐Ÿ“Œ ๋ฉ”์†Œ๋“œ๋ž€ ?

    ๊ฐ์ฒด ๋‚ด์—์„œ ์ •์˜๋œ ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค.

     

    • ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ์ฒด ๋‚ด์— ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    interface Aboutme {
      myname: string;
      age: number;
      gender: string;
      hobby: string;
      married: boolean;
      thisismethod?(comment: string): string;
      //   thisismethod? : (comment : string) => string;
    }
      thisismethod(comment: string): string;
      thisismethod : (comment : string) => string;

     

     

    ๐Ÿ‘‰๐Ÿป ์ด ๋‘๊ฐœ๋Š” ํ‘œํ˜„๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด์ง€๋งŒ ๊ฐ™์€ ๋ฉ”์„œ๋“œ ์ด๋‹ค.(ํ˜น์‹œ ๋ชจ๋ฅด๋Š” ์˜ค๋ฅ˜๋ฒ”์œ„๋กœ optional ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.)

     

     

     

     

     

    interface์—์„œ ์“ฐ์ผ ์ˆ˜ ์žˆ๋Š” Read Only ์†์„ฑ

    ๐Ÿ“Œ Read Only ํ”„๋กœํผํ‹ฐ๋Š” ์ฝ๊ธฐ ์ „์šฉ ํ”„๋กœํผํ‹ฐ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ํ• ๋‹น๋œ ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์€ ๋ฐ”๊ฟ€์ˆ˜ ์—†๋‹ค !
    interface Aboutme {
      readonly myname: string; //๐Ÿ“Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด myname ๋ถˆ๋ณ€์ ์ธ ๊ฐ’์„ ์›ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ ์•ž์— readonly๋ฅผ ๋ถ™์—ฌ์ฃผ์ž !
      age: number;
      gender: string;
      hobby: string;
      married: boolean;
    }

     

     

     

     

     

     

    ๐Ÿ“š ๋งˆ์ง€๋ง‰์œผ๋กœ..

    - interface ๋Š” ์ฝ”๋“œ๊ฐ€ ๋ Œ๋”๋ง ๋ ๋•Œ ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ๋ ฅ์ด ์—†๋‹ค.(์ฆ‰, ์ปดํŒŒ์ผ๋œ js ํŒŒ์ผ์—์„œ๋Š” ๋ณด์ด์ง€ x )
    
    - interface ๋Š” ์ž‘์„ฑ์ค‘์ธ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์กด์žฌํ•˜๋Š”๊ฒƒ !

     

     

    ๐Ÿง  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—๊ฒŒ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜๋ก ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ๋” ๋งŽ์€ ๋„์›€์„ ์ค„์ˆ˜ ์žˆ๋‹ค
    (๋” ๋งŽ์€ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ)

     

     

     

     

    (์ฐธ๊ณ ์˜์ƒ) ๋•…์ฝฉ์ฝ”๋”ฉ : https://www.youtube.com/watch?v=jlzvXcDGZUU

    ๋Œ“๊ธ€