2021년 2월 5일 금요일

[Typescript] 함수를 export 하기

외부에서 모듈을 가져다 사용하기 위해서 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에 값을 추가해주면 되지만, 이렇게 하면 보기 불편하기 때문에 컴포넌트 별로 분리하는게 좋다.

이 부분은 다음 글에서 확인할 수 있다.

댓글 없음: