부록
I. 용어 설명
-
스펙(Spec) - Turbo Native Module이나 Fabric Native 컴포넌트의 API를 설명하는 TypeScript 또는 Flow 코드. **코드젠(Codegen)**이 보일러플레이트 코드를 생성할 때 사용한다.
-
네이티브 모듈(Native Modules) - 사용자 인터페이스(UI)가 없는 네이티브 라이브러리. 예를 들어 영구 저장소, 알림, 네트워크 이벤트 등이 있다. 이들은 자바스크립트 애플리케이션 코드에서 함수와 객체로 접근할 수 있다.
-
네이티브 컴포넌트(Native Component) - React 컴포넌트를 통해 애플리케이션의 자바스크립트 코드에서 사용할 수 있는 네이티브 플랫폼 뷰.
-
레거시 네이티브 컴포넌트(Legacy Native Components) - 이전 React Native 아키텍처에서 실행되는 컴포넌트.
-
레거시 네이티브 모듈(Legacy Native Modules) - 이전 React Native 아키텍처에서 실행되는 모듈.
II. 코드 생성 타입
다음 표는 각 플랫폼에서 지원되는 타입과 그에 매핑되는 타입을 참조할 수 있도록 정리한 것이다:
Flow | TypeScript | Flow Nullable Support | TypeScript Nullable Support | Android (Java) | iOS (ObjC) |
---|---|---|---|---|---|
string | string | ?string | string | null | string | NSString |
boolean | boolean | ?boolean | boolean | null | Boolean | NSNumber |
객체 리터럴{| foo: string, ...|} | { foo: string, ...} as const | ?{| foo: string, ...|} | ?{ foo: string, ...} as const | - | - |
Object [1] | Object [1] | ?Object | Object | null | ReadableMap | @ (타입이 없는 딕셔너리) |
Array<T> | Array<T> | ?Array<T> | Array<T> | null | ReadableArray | NSArray (또는 객체 내부에서 사용될 때 RCTConvertVecToArray ) |
Function | Function | ?Function | Function | null | - | - |
Promise<T> | Promise<T> | ?Promise<T> | Promise<T> | null | com.facebook.react.bridge.Promise | RCTPromiseResolve 및 RCTPromiseRejectBlock |
타입 유니온'SUCCESS'|'FAIL' | 타입 유니온'SUCCESS'|'FAIL' | 콜백에서만 지원 | - | - | |
콜백() => | 콜백() => | 지원 | com.facebook.react.bridge.Callback | RCTResponseSenderBlock | |
number | number | 지원하지 않음 | double | NSNumber |
[1] 객체(Object)보다는 객체 리터럴(Object literal)을 사용하는 것을 강력히 권장한다.
info
React Native의 코어 모듈에 대한 자바스크립트 명세를 참고하는 것도 도움이 될 수 있다. 이 명세는 React Native 저장소의 Libraries/
디렉토리 안에 위치한다.