【发布时间】:2021-01-26 05:36:55
【问题描述】:
这是我的 styledComponent:
const stopPropagation = (event: Event): void => {
event.stopPropagation();
};
<StyledComp onClick={stopPropagation}> //error occurs here
hi StyledComp
</StyledComp>
这就是我的定义:
export type Prop = {
onClick: (event: Event) => void;
};
export const StyledComp = styled.div<Prop>`
display: flex;
`;
但它会返回如下错误:
TS2769:没有重载匹配此调用。重载 1 of 2, '(props: Pick
, "title" | "slot" | ... 252 更多 ... | "is"> & { ...; } & StyledComp, "title" | ... 254 更多 ... | "is"> & Partial<...>, "title" | ... 254 更多 ... | "is"> & { ... ; } & { ...; }): ReactElement<...>',给出以下错误。类型 '(event: Event) => void' 不可分配给类型 '((event: MouseEvent ) => void) & ((event: Event) => void)'。类型 '(event: Event) => void' 不可分配给类型 '(event: MouseEvent ) => void'。参数 'event' 和 'event' 的类型不兼容。类型“MouseEvent ”不可分配给类型“事件”。属性“目标”的类型不兼容。类型“EventTarget”中缺少属性“值”,但类型“{ value: string; }'。重载 2 of 2, '(props: StyledComponentPropsWithAs): ReactElement , string | ... 1 更多 ... | (new (props: any) => Component<...>)>',给出了以下错误。类型 '(event: Event) => void' 不可分配给类型 '((event: MouseEvent ) => void) & ((event: Event) => void)'。类型 '(event: Event) => void' 不可分配给类型 '(event: MouseEvent ) => void'。
注意:您可以找到 styled-component&Typescript 文档here!
编辑:
这是事件类型:
export type Event = {
target: {
value: string;
};
stopPropagation: () => void;
preventDefault: () => void;
};
【问题讨论】:
-
我不确定
Event到底是什么,但 AFAIK 没有这样的内置静态类型。因此,如果您没有手动定义,则必须改用React.MouseEvent。 -
我手动定义的,和 React.MouseEvent 一样。
-
哦,也许我对事件类型有误。让我调查一下,也许是问题所在
标签: reactjs typescript styled-components