reactjs 如何使用TypeScript解决动态类型问题?

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

我正在尝试实现一个通用的表组件。
这个想法是,当组件在其他地方使用时,可以查看可以分配给组件的所有剩余 prop 。
例如,默认情况下我设置了下面的props。但是你可以使用table组件接收的几个props来自定义组件:

<MantineDataTable
      withTableBorder
      withColumnBorders
      highlightOnHover
      loaderType="oval"
      loaderSize="sm"
      loaderBackgroundBlur={1}
      fetching={isLoading}
      records={records}
      rowStyle={() => (theme) => ({
        fontSize: !mediumScreen ? theme.fontSizes.sm : theme.fontSizes.xs,
      })}
      columns={columns}
      {...rest}
    />

字符串
但是我无法让Intelisense识别您可以添加到组件中以自定义它的 prop 。
我有以下输入错误:

An interface can only extend an object type or intersection of object types with statically known members.


关于这种类型:

interface DataTableProps<T, TRecords> extends MantineDataTableProps<T> {
  records: TRecords[];
  columns: DataTableColumn<TRecords>[];
  isLoading?: boolean;
}


我该如何解决这个问题?
CodeSandbox

1aaf6o9v

1aaf6o9v1#

由于泛型的使用,你遇到了接口的限制。你可以通过使用类型别名来解决这个问题:

type DataTableProps<T, TRecords> = MantineDataTableProps<T> & {
  records: TRecords[],
  columns: DataTableColumn<TRecords>[],
  isLoading?: boolean,
}

字符串
Codesandbox
一个类可以实现一个接口或类型别名,两者的方式完全相同。但是请注意,类和接口被认为是静态蓝图。因此,它们不能实现/扩展命名联合类型的类型别名。

相关问题