더북(TheBook)

상단의 @flow라는 키워드는 이 자바스크립트 파일을 Flow라는 정적 타입 분석기로 검사하겠다는 의미입니다. 리액트 네이티브 프로젝트를 만들면 이렇게 기본적으로 Flow가 적용되어 있습니다. 자바스크립트 언어는 기본적으로 동적 타입 시스템을 가지고 있습니다. 동적 타입 시스템에서는 변수를 선언할 때 사전에 타입을 지정하지 않아도 값을 할당할 때 자동으로 지정해줍니다. 즉, 다음과 같이 숫자였던 변수에 문자열을 담을 수도 있고, 객체를 담을 수도 있죠.

let a = 1;
a = 'hello';
a = { foo: 'bar' }

Flow를 사용하면 자바스크립트에서 정적 타입 시스템을 사용할 수 있습니다. 정적 타입 시스템에서는 다음 코드와 같이 변수, 파라미터, 함수의 반환값 등에 타입을 사전에 지정해 코드를 작성합니다.

// @flow
function square(n: number): number {
  return n * n;
}

square("2"); // Error!

이 코드에서는 square라는 함수에서 n이라는 파라미터를 숫자 타입으로 받아와서 숫자 타입의 값을 반환한다고 설정했습니다. 그리고 이 함수에 숫자가 아닌 문자열을 넣으면 에디터 단에서 에러를 감지할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.