ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • typescript(3) - λͺ¨λ“ˆ , λ„€μž„μŠ€νŽ˜μ΄μŠ€
    μ›Ή 개발/typescript 2023. 6. 25. 17:19

    🌈 λ„€μž„μŠ€νŽ˜μ΄μŠ€λž€?

    - λ‚΄λΆ€ λͺ¨λ“ˆ

    - νƒ€μž…μŠ€ν¬λ¦½νŠΈλ§Œμ˜ νŠΉμœ ν•œ λͺ¨λ“ˆ λ°©λ²•μœΌλ‘œμ¨ μ „μ—­ 이름 곡간과 λΆ„λ¦¬λœ λ„€μž„μŠ€νŽ˜μ΄μŠ€ λ‹¨μœ„μ˜ 이름곡간을 λœ»ν•œλ‹€.

    - ν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€, 각쒅 ν•¨μˆ˜ 같은 λ‚΄μš©μ„ ν•œ νŒŒμΌμ—μ„œ κ·Έλ£Ήν™”ν•˜μ—¬ 관리 ν•  수 있게 ν•΄μ£ΌλŠ” κ°œλ…μž„

    🌱 ν˜•μ‹

    namespace λ„€μž„μŠ€νŽ˜μ΄μŠ€μ΄λ¦„ {
       
       const λ³€μˆ˜μ΄λ¦„
       
       export function {
       
       }
    }

     

     

    πŸ–‹  μ˜ˆμ‹œ

    // λ‚΄λΆ€μ—μ„œ μ„ μ–Έν•œ DOM μ΄λΌλŠ” λͺ¨λ“ˆ (λ„€μž„μŠ€νŽ˜μ΄μŠ€)
    namespace Dom {
       // μ™ΈλΆ€μ—μ„œ μ ‘κ·Ό λΆˆκ°€
       const variable = 123;
    
       // μ™ΈλΆ€μ—μ„œ μ ‘κ·Ό κ°€λŠ₯ν•˜λ„λ‘ export
       export function add(arg1: number, arg2: number): number {
          return arg1 + arg2;
       }
    
       // export ν•˜μ§€ μ•Šμ€ λ„€μž„μŠ€νŽ˜μ΄μŠ€ 내뢀에 μ •μ˜λœ ν•¨μˆ˜λŠ” μ™ΈλΆ€μ—μ„œ μ ‘κ·Ό λΆˆκ°€
       function subtract(arg1: number, arg2: number): number {
          return arg1 - arg2;
       }
    }
    
    Dom.add(1,2); // 3

     

     

    πŸ“š λ„€μž„μŠ€νŽ˜μ΄μŠ€ λ©€ν‹° 파일 

    - λ„€μž„μŠ€νŽ˜μ΄μŠ€ μ½”λ“œλ₯Ό 단 ν•˜λ‚˜μ˜ νŒŒμΌμ—μ„œ 관리할 ν•„μš”λŠ” μ—†λ‹€.

     

    A.ts 파일 μ •μ˜

    namespace Dom {
        //μ™ΈλΆ€μ—μ„œ μ ‘κ·Ό λΆˆκ°€
        const variable =123;
        
        // μ™ΈλΆ€μ—μ„œ μ ‘κ·Ό κ°€λŠ₯ν•˜λ„λ‘ export ν•΄μ£ΌκΈ°
        export function add(arg1 : number, arg2 : number) : number {
            return arg1 + arg2;
        }  
        
    )

     

     

    πŸ–‹ B.ts 파일 μ •μ˜

    namespace Dom{
       export function sub(arg1: number1, arg2:number) : number {
          return arg1 - arg2;
       }
    }

     

    - μ΄λ•Œ, A와 Bλ₯Ό 같이 μ“°κΈ° μœ„ν•΄μ„œ, (μž„ν¬νŠΈν•΄μ˜€κΈ° μœ„ν•΄μ„œ)

    /// <reference path = "./A.ts"/>
    /// <reference path = "./B.ts" />
    
    Dom.add(1,2); //3이 좜λ ₯λ©λ‹ˆλ‹€. 
    Dom.sub(1,2); //-1이 좜λ ₯λ©λ‹ˆλ‹€.

    λ‹€μŒκ³Ό 같이 μž‘μ„±μ΄ κ°€λŠ₯ν•˜λ‹€. 

     

    πŸ–‹ μž„ν¬νŠΈ ν˜•μ‹

    /// <reference path="<file.ts>" />

     

     

    - 비둝 파일이 λ‹€λ₯΄λ”라도, ν”„λ‘œμ νŠΈ λ‚΄μ—μ„œ κ°™μ€ λ„€μž„μŠ€νŽ˜μ΄μŠ€ λ‚΄μ—μ„œλŠ” μ΄λ¦„을 쀑볡해 클래슀, ν•¨μˆ˜, λ³€μˆ˜ 등을 μ„ μ–Έν•˜λ©΄ 였λ₯˜κ°€ λ‚œλ‹€.

    - λ„€μž„μŠ€νŽ˜μ΄μŠ€κ°€ λ‹€λ₯΄λ‹€λ©΄ λ³€μˆ˜ 이름이 같아도 이름 좩돌이 μ—†λ‹€.

     

     

    λ„€μž„μŠ€νŽ˜μ΄μŠ€ 쀑첩

    - λ„€μž„μŠ€νŽ˜μ΄μŠ€ 내뢀에 λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό μ„ μ–Έν•  수 있고 곡개(export) ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

    - λ„€μž„μŠ€νŽ˜μ΄μŠ€ μ•ˆμ— λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“œλŠ” 것을 쀑첩이라고 ν•œλ‹€. 

     

    μ˜ˆμ‹œ

    Dom.ts

    namespace Dom {
    
      // μ€‘μ²©λœ Events λ„€μž„μŠ€νŽ˜μ΄μŠ€ : 곡개된 λ„€μž„μŠ€νŽ˜μ΄μŠ€μž„(exports)
      export namespace Events {
        export function on(
          el         : Element|Document,
          type       : string,
          handler    : (e:Event)=>void,
          is_capture : boolean = false
        ):void {
          el.addEventListener(type, handler, is_capture);
        }
    
        export function off(
          el         : Element|Document,
          type       : string,
          handler    : (e:Event)=>void,
          is_capture : boolean = false
        ):void {
          el.removeEventListener(type, handler, is_capture);
        }
      }
    
    }

     

    Aliasing

    - μ€‘μ²©λœ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ— μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μ½”λ“œκ°€ κΈΈμ–΄μ§„λ‹€λ©΄ 별칭을 λ§Œλ“€μ–΄ μ‚¬μš©ν•  수 μžˆλ‹€. 

    - λ„€μž„μŠ€νŽ˜μ΄μŠ€μ˜ 별칭을 λ§Œλ“€ λ•Œμ—λŠ” importλ₯Ό μ‚¬μš©ν•œλ‹€. 

     

    ν˜•μ‹ 

    /// <reference path="./Dom.ts" />
    
    // Dom.Events λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό import ν•˜μ—¬ Events λ³€μˆ˜μ— μ°Έμ‘°
    import Events = Dom.Events;

     

     

    🌈 λͺ¨λ“ˆ 

    - 파일 자체 λ²”μœ„ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λ©°, λͺ¨λ“ˆ λ‚΄ μ„ μ–Έλœ λ³€μˆ˜, ν•¨μˆ˜, 클래슀 등을 λͺ…μ‹œμ μœΌλ‘œ 내보내지 μ•ŠμœΌλ©΄ λͺ¨λ“ˆ μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν•˜λŠ” 것이 λΆˆκ°€λŠ₯ν•˜λ‹€. (μœ„μ˜ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ™€ λ˜‘κ°™μŒ)

     

    πŸ“š λͺ¨λ“ˆ 내보내기 

    - λ‚΄λ³΄λ‚΄κ³ μž ν•˜λŠ” λ³€μˆ˜, ν•¨μˆ˜, 클래슀 μ•žμ— exportλ₯Ό 뢙이면 λœλ‹€. 

    export function on(
      el         : Element|Document,
      type       : string,
      handler    : (e:Event)=>void,
      is_capture : boolean = false
    ):void {
      el.addEventListener(type, handler, is_capture);
    }
    
    export function off(
      el         : Element|Document,
      type       : string,
      handler    : (e:Event)=>void,
      is_capture : boolean = false
    ):void {
      el.removeEventListener(type, handler, is_capture);
    }

     

     

    λͺ¨λ“ˆ 뢈러였기

    - μ™ΈλΆ€ λͺ¨λ“ˆμ„ λΆˆλŸ¬μ™€ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œ import ꡬ문을 μ‚¬μš©ν•  수 μžˆλ‹€. 

    - 비ꡬ쑰화 할당을 μ‚¬μš©ν•˜μ—¬ μœ„μ˜ ν•¨μˆ˜λ“€μ„ λΆˆλŸ¬μ˜¨λ‹€. 

     

    app.ts 

    import { on, off } from './Dom/events';
    
    on(document, 'click', (e) => document.body.style.background = '#912f03');

     

     

     

    default λͺ¨λ“ˆ μ‚¬μš©ν•˜κΈ°

    - λͺ¨λ“ˆ λ‚΄μ—μ„œ 내보낼 것듀을 λ¬Άμ–΄μ„œ 기본으둜 내보내기가 κ°€λŠ₯ν•˜λ‹€. 

     

    Dom/selectors.ts

    function el(selector:string, context:HTMLElement|Document = document): HTMLElement {
      return context.querySelector(selector);
    }
    
    function els(selector:string, context:HTMLElement|Document = document): NodeList {
      return context.querySelectorAll(selector);
    }
    
    export default { el, els };

     

    default λͺ¨λ“ˆ 뢈러였기 

    - default둜 내보내진 λͺ¨λ“ˆμ€ import κ΅¬λ¬Έμ—μ„œ μ°Έμ‘°ν•  λͺ¨λ“ˆ 이름(λ³€μˆ˜λͺ…)으둜 μ„€μ •ν•  수 μžˆλ‹€. 

    import Dom from './Dom/selectors';
    import { on, off } from './Dom/events';
    
    on(document, 'click', (e) => Dom.el('body').style.background = '#912f03');

     

     

     

Designed by Tistory.