跳到主要内容

附录

一、术语

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

  • 原生模块 (Native Modules) - 没有用户界面 (UI) 的原生库。例如持久化存储、通知、网络事件。这些功能可作为函数和对象供你的 JavaScript 应用程序代码访问。

  • 原生组件 (Native Component) - 可通过 React 组件供你的应用程序 JavaScript 代码使用的原生平台视图。

  • 传统原生组件 (Legacy Native Components) - 在旧版 React Native 架构上运行的组件。

  • 传统原生模块 (Legacy Native Modules) - 在旧版 React Native 架构上运行的模块。

二、Codegen 类型映射

你可以使用下表作为参考,了解支持的类型以及它们在每个平台上的映射关系

FlowTypeScriptFlow 可空性支持TypeScript 可空性支持Android (Java)iOS (ObjC)
字符串字符串?stringstring | null字符串NSString
布尔值布尔值?booleanboolean | nullBooleanNSNumber
对象字面量
{| foo: string, ...|}
{ foo: string, ...} as const?{| foo: string, ...|}?{ foo: string, ...} as const--
Object [1]Object [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
数字数字doubleNSNumber

注意:

[1] 我们强烈建议使用对象字面量而非 Object 类型。

信息

你可能还会发现参考 React Native 核心模块的 JavaScript 规范很有用。它们位于 React Native 仓库的 Libraries/ 目录中。