Rap*_*117 8 typescript reactjs eslint
我的 linter 说我不应该在 TS 中使用 object 作为类型。但是,我正在使用的库要求扩展对象的泛型类型。
因此,我正在使用该库编写一个通用组件,如下所示:
const Component = <T extends object>(props: CustomProps<T>): React Element => etc.
Run Code Online (Sandbox Code Playgroud)
由于 linter 在抱怨,我尝试将其切换为
const Component = <T extends Record<string, unknown>>(props: CustomProps<T>): React Element => etc.
Run Code Online (Sandbox Code Playgroud)
但是,如果我再做这样的事情:
interface MyInterface {
something: string;
goes: number;
here: string;
}
const CallerComponent = () => Component<MyInterface> />
Run Code Online (Sandbox Code Playgroud)
TS 表示 MyInterface 不满足约束 Record<string, unknown>。除了做之外,还有什么办法可以解决这个问题吗
interface MyInterface extends Record<string, unknown>
Run Code Online (Sandbox Code Playgroud)
我宁愿不必遍历整个代码库,将它添加到每个界面,因此很高兴知道是否有一种方法可以在我说 T 肯定是一个对象的地方输入它。
在此先感谢您的帮助。
小智 20
我遇到了同样的问题,发现你可以用而type不是声明你的对象interface,它解决了它。
在你的情况下它将是:
type MyInterface = {
something: string
goes: number
here: string
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1933 次 |
| 最近记录: |