react native fabric / turbo,使用枚举或类型

jobtbby3  于 6个月前  发布在  React
关注(0)|答案(1)|浏览(61)

我有一个react native fabric native components。我试图在JavaScript规范文件中有一个枚举或类型如下:当在NativeProps接口中使用SizeType时,运行codegen时,我会收到一个错误。
错误:“size”需要默认枚举值
有没有一种方法可以像这样使用枚举或类型?(如果我在NativeProps中不使用SizeType,代码生成器运行时不会出错)。
感谢你的回答。

import type { HostComponent } from "react-native";
import { ViewProps } from "react-native/Libraries/Components/View/ViewPropTypes";
import codegenNativeComponent from "react-native/Libraries/Utilities/codegenNativeComponent";

type SizeType = "s" | "m" | "l"

export interface NativeProps extends ViewProps {
  title: string;
  size: SizeType;
}

export default codegenNativeComponent<NativeProps>(
  "RTNButtonView"
) as HostComponent<NativeProps>;

字符串
i尝试使用type或enum

lc8prwob

lc8prwob1#

您可以使用react-native/Libraries/Types/CodegenTypes中提供的类型WithDefault来解决此问题。
你的代码应该如下:

import type { HostComponent } from "react-native";
import { ViewProps } from "react-native/Libraries/Components/View/ViewPropTypes";
import codegenNativeComponent from "react-native/Libraries/Utilities/codegenNativeComponent";
import type { WithDefault } from 'react-native/Libraries/Types/CodegenTypes';

type SizeType = "s" | "m" | "l"

export interface NativeProps extends ViewProps {
  title: string;
  size?: WithDefault<SizeType, 'm'>;
}

export default codegenNativeComponent<NativeProps>(
  "RTNButtonView"
) as HostComponent<NativeProps>;

字符串
请注意,使用WithDefault时,?标记很重要

相关问题