带接口,reactjs,typescript,eslint"/>

首页 > 解决方案 > 如何满足Record的约束带接口

问题描述

我的 linter 说我不应该在 TS 中使用 object 作为类型。但是,我正在使用的库要求扩展对象的泛型类型。

因此,我正在使用如下所示的库编写一个通用组件:

const Component = <T extends object>(props: CustomProps<T>): React Element => etc. 

由于 linter 在抱怨,我尝试将其切换为

const Component = <T extends Record<string, unknown>>(props: CustomProps<T>): React Element => etc. 

但是,如果我再做这样的事情:

interface MyInterface {
  something: string;
  goes: number; 
  here: string;
}

const CallerComponent = () => Component<MyInterface> />

TS 说 MyInterface 不满足约束 Record<string, unknown>。除了做之外还有什么办法吗

interface MyInterface extends Record<string, unknown>

我宁愿不必遍历整个代码库,将它添加到每个接口,所以很高兴知道是否有一种方法可以在我说 T 肯定是一个对象的地方输入它。

提前感谢您的帮助。

标签: reactjstypescripteslint

解决方案


我遇到了同样的问题,发现你可以用type而不是声明你的对象interface,它解决了它。

在您的情况下,它将是:

type MyInterface = {
  something: string
  goes: number
  here: string
}

推荐阅读