跳到主要内容

附录

I. 术语

  • Spec - 用于描述 Turbo Native 模块或 Fabric 原生组件 API 的 TypeScript 或 Flow 代码。由 Codegen 用来生成样板代码。

  • Native Modules - 没有用户界面 (UI) 的本地库。例如持久存储、通知、网络事件等。这些作为函数和对象,可以被你的 JavaScript 应用代码访问。

  • Native Component - 通过 React 组件可供应用 JavaScript 代码使用的本地平台视图。

  • Legacy Native Components - 运行在旧 React Native 架构上的组件。

  • Legacy Native Modules - 运行在旧 React Native 架构上的模块。

II. Codegen 类型定义

你可以参照下表了解支持的类型及其在各平台上的对应类型:

FlowTypeScriptFlow 可空支持TypeScript 可空支持Android (Java)iOS (ObjC)
stringstring?stringstring | nullstringNSString
booleanboolean?booleanboolean | nullBooleanNSNumber
对象字面量
{| foo: string, ...|}
{ foo: string, ...} as const?{| foo: string, ...|}?{ foo: string, ...} as const--
对象 [1]对象 [1]?ObjectObject | nullReadableMap@(无类型字典)
Array<T>Array<T>?Array<T>Array<T> | nullReadableArrayNSArray(当用于对象内时使用 RCTConvertVecToArray
FunctionFunction?FunctionFunction | null--
Promise<T>Promise<T>?Promise<T>Promise<T> | nullcom.facebook.react.bridge.PromiseRCTPromiseResolveRCTPromiseRejectBlock
类型联合
'SUCCESS'|'FAIL'
类型联合
'SUCCESS'|'FAIL'
仅作为回调函数--
回调
() =>
回调
() =>
支持com.facebook.react.bridge.CallbackRCTResponseSenderBlock
numbernumber不支持doubleNSNumber

备注:

[1] 我们强烈建议使用对象字面量替代对象。

信息

你也可以参考 React Native 仓库中 Libraries/ 目录内核心模块的 JavaScript 规范说明。