export default function A {}
export const A: FC = () => {}
이 둘은 JavaScript 및 TypeScript에서 함수를 정의하고 내보내는 두 가지 다른 방법이다. 이 둘은 과연 어떻게 다른 걸까?
호이스팅
함수 선언 (Function Declaration)
export default function A() { // 함수 본문 }
- 호이스팅: 함수 선언은 호이스팅 되므로, 함수 선언문 이전에 호출할 수 있다.
함수 표현식 (Function Expression)
export const A: FC = () => { // 함수 본문 };
- 호이스팅: 함수 표현식은 변수 호이스팅의 규칙을 따르며, 선언되기 전에 호출할 수 없다.
내보내기
기본 내보내기 (Default Export)
export default function A() { return <div>Component A</div>; }
- 기본 내보내기: 함수 선언은 주로 기본 내보내기에 사용된다.
- 모듈당 하나의 기본 내보내기: 기본 내보내기는 모듈당 하나만 사용할 수 있다.
- 임포트 시 임의의 이름 사용 가능: 기본 내보내기는 임포트 할 때 임의의 이름을 사용할 수 있다.
명명된 내보내기 (Named Export)
export const A: FC = () => { return <div>Component A</div>; };
- 명명된 내보내기: 함수 표현식은 명명된 내보내기에 사용된다.
- 여러 개의 명명된 내보내기: 명명된 내보내기는 모듈당 여러 개를 사용할 수 있다.
- 원래 이름으로 임포트: 명명된 내보내기는 임포트 할 때 원래 이름을 사용해야 한다.
타입스크립트와 타입 선언
함수 선언과 타입스크립트
export default function A(): JSX.Element { // 함수 본문 }
- 함수 선언에 타입을 추가할 수 있다.
- React 컴포넌트의 경우 반환 타입을
JSX.Element
로 명시할 수 있다.
함수 표현식과 타입스크립트
import { FC } from 'react'; export const A: FC = () => { // 함수 본문 };
FC
는FunctionComponent
의 약어로, React에서 함수형 컴포넌트를 타입 선언할 때 사용된다.FC
타입을 사용하면 props에 대한 타입 정의도 포함된다.
728x90
'Javascript' 카테고리의 다른 글
고차 함수 (0) | 2024.07.08 |
---|---|
이중 NOT 연산자 (!!) (0) | 2024.07.02 |
코드 품질 도구 (0) | 2024.07.01 |
Npm audit (0) | 2024.06.15 |
모듈 시스템 (0) | 2024.06.01 |