외부에서 모듈을 가져다 사용하기 위해서 export를 선언하여 변수, 함수, 클래스 등을 내보낸다.
이 글에서는 함수를 export하는 방법과 약간 헷갈릴만한 문법을 보려고 한다.
우선 기본적인 문법 몇 가지를 알아보려면 typescript에서는 export 구문으로 한 소스 파일에서 여러 개의 값들을 export 할 수 있다.
1 2 | export const a = "a"; export const b = "b"; | cs |
Typescript에서 위와 같이 해서 컴파일된 js 파일을 보면 module.exports로 묶여서 a, b의 값이 export 된 것을 볼 수 있다.
그리고 'export =' 을 이용하여 단일 값(객체, 변수 등)을 export 할 수 있다.
export = () => {} 이렇게 하면 함수 하나를 export 하는 것이다.
아래의 함수를 보자.
1 2 3 4 5 | const f = (): string => { return "a"; } export = f; //파일 이름 f.ts 컴파일 후 f.js | cs |
이렇게 하면 함수 자체가 export 되게 된다.
그래서 다른 파일에서 import해서 아래와 같이 사용하면 된다.
1 2 | const _f = require("f"); console.log(_f()); | cs |
함수를 export 했기 때문에 실행을 하면 된다.
하지만 아래와 같이 하면 값만 export 된다.
1 2 3 4 5 6 7 8 9 10 | const f = (): string => { return "a"; } export = f(); //또는 export = (() => { return "a"; })(); //이름 없이 람다식으로 함수를 만들어서 바로 실행 | cs |
이 경우에는 함수를 실행한 값을 export 하는 것이다.
즉, 함수를 리턴하는 것이 아니라 함수의 결과를 리턴하는 것이다.
javascript의 이런 구문이 잘 적응이 안되고 있다보니 모양이 비슷해서 헷갈렸다.
1 2 | const _f = require("f"); console.log(_f); //a가 찍힘. | cs |
이것을 이용해서 코드를 분리해서 Nodejs의 global 값에 함수나 다른 값들을 추가할 수 있다.
코드를 분리안하면 사실 프로젝트 시작 부분에서 global에 값을 추가해주면 되지만, 이렇게 하면 보기 불편하기 때문에 컴포넌트 별로 분리하는게 좋다.
이 부분은 다음 글에서 확인할 수 있다.
댓글 없음:
댓글 쓰기