본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


TypeScript

Typescript 네임스페이스 그리고 Import

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 4. 26.

 

 

타입스크립트에서 네임스페이스는 일종의 패키지 개념이다.

즉, 클래스나 인터페이스, 각종 함수 같은 내용을 한 파일에서 그룹화하여 관리 할 수 있게 해주는 개념이다.

namespace classBody {   //패키지 개념
   export class classA{  //export를 하지 않으면 컴파일 오류가 난다.
	public num : number = 10;  
   }

   export class classB{
	public num : number = 20;
   }

   export function method() : void{
       console.log('Just print..');
   }
}


var cls = new classBody.classA();
console.log(cls.num);

cls = new classBody.classB();
console.log(cls.num);

classBody.method();  //함수는 굳이 new를 사용하지 않아도 된다.

파일 1개로만 코드가 관리되면 파일 1개의 내용이 너무 길어져서 사용하는데 불편할 것이다.

이럴때는 파일을 여러개 만들고 import를 통해서 해당 파일을 참조 하도록 하면 된다.

먼저 앞에서 만든 파일을 a.ts로 만든다.

export namespace classBody { //export를 사용해야 다른 곳에서 가져갈 수 있다.
   export class classA{
	public num : number = 10;  
   }

   export class classB{
	public num : number = 20;
   }

   export function method() : void{
       console.log('Just print..');
   }
}

앞서 달라진 점은 네임스페이스에 export가 붙은 것이다. 즉 네임스페이스나 클래스, 인터페이스 및 함수 등등에 export가 붙으면 "다른곳에서 가져갈 수 있다" 의 의미가 되는 것이다.

a.ts로 만든 파일을 import해서 사용하는 b.ts 내용이다.

import {classBody} from './a';  //경로, 절대경로를 줘도 상관 없다.

var cls = new classBody.classA();
console.log(cls.num);

cls = new classBody.classB();
console.log(cls.num);

classBody.method();

마찬가지로 잘 동작한다. 모듈, 클래스, 함수 등 자신이 가져오고 싶은 내용을 써 주면 된다.(콤마단위로 구분지어)

만약 전부 가져와를 하고 싶으면 아래처럼 하면된다.

import * as lib from './a';  //as뒤에 사용하고 싶은 별칭을 적어주자

var cls = new lib.classBody.classA();
console.log(cls.num);

cls = new lib.classBody.classB();
console.log(cls.num);

lib.classBody.method();

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글