【发布时间】:2020-01-21 14:03:34
【问题描述】:
我有一些使用来自第三方库的组件的 React+TypeScript 代码。
<ThirdPartyComponent onSelect={(value: any) => {...}} />
eslint-typescript 认为这是一个问题:
出乎意料。指定不同的类型。 eslint(@typescript-eslint/no-explicit-any)
选择处理程序的类型定义使用any:
export interface ThirdPartySelectCallback extends React.EventHandler<any> {
(value: any, e: React.SyntheticEvent<{}>): void;
}
在不禁用 eslint 规则的情况下避免此问题的正确方法是什么?
将类型更改为string 会产生不同的错误:
<ThirdPartyComponent onSelect={(value: string, e: React.SyntheticEvent<{}>) => {...}} />
Type '(value: string, e: SyntheticEvent) => void' 不可分配给 type 'ThirdPartySelectCallback'
【问题讨论】:
-
你不能假设你期望的类型吗?还是物品类型是随机的?
-
onSelect={(value: string)怎么样?或者只是添加// eslint:disable-line,因为您无法控制第三方组件 -
假设较窄的类型会产生不同的错误。我用详细信息更新了问题。
标签: reactjs typescript eslint typescript-eslint