ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 외부파일 이용시 declare & ambient module
    Typescript 2022. 6. 17. 16:52

    .js에 있는 변수를 .ts에서 이용하고 싶을 때, declare를 사용한다.

    html css js파일은 그냥 <script src="">를 이용하면 된다. 근데, 그러고 쓰면 에러가 뜬다 그래서 declare를 사용하는데,

    (data.js)
    
    var a = 10;
    var b = {name :'kim'};
    (index.ts)
    
    declare let a :number;
    console.log(a + 1);

    이렇게, declare로 a라는 변수가 어딘가에 있는데, number라고 재정의하면서 에러나지 마라! 라고 해주는게 된다.

    그리고 declare는 힌트를 주는거기에 js파일로 변환이되진 않는다.

     

    특히 .js로 만든 라이브러리 사용할 때 ts에서 엄청 에러가 나는데, $같은 제이쿼리도 다시 재정의 해줘야한다.

     

    만약, .ts 에서 .ts파일로 변수를 가져다 쓰고 싶다면

    (data.js)
    
    export var a = 10;
    (index.ts)
    
    import {a} from './data';
    
    console.log(a + 1);

    이렇게 export import를 해주면 되는데 더 쉬운 문법이 있다.

    ts는 이상하게 ambient module이라해서 그냥 변수를 쓰면 자동으로 가져다 쓸 수 있다. 즉 export import없어도 그냥 가져다 써도 된다. 

    즉, 모두가 전역변수가 된다.

    근데, 전역변수인게 불편하면 로컬모듈로 만들면 되는데,

    (data.js)
    
    export {}
    
    var a = 10;
    
    declare global {
    	type Dog = string;
    }

    상단에 , export{} 를 쓰면 로컬 모듈이 되어 다른 파일에서 사용할 수 없어진다. 여기서 글로벌 변수를 만들고 싶으면,

    이렇게 declare global{}안에 적어주면 된다.

    'Typescript' 카테고리의 다른 글

    implements키워드  (0) 2022.06.18
    d.ts파일 이용하기  (0) 2022.06.18
    array에 붙이는 tuple type  (0) 2022.06.17
    React와 Typescript 사용  (0) 2022.06.17
    타입을 파라미터로 입력하는 Generic  (0) 2022.06.17

    댓글

Designed by Tistory.