[英]Declaring defined property of a third party library
所以我正在使用一个名为Evergreen的React UI库,该库未键入。
我正在写一个我正在使用的组件的声明,当我碰到一点障碍时,菜单在React中是这样构造的:
<Menu>
<Menu.Group>
<Menu.Item>Share...</Menu.Item>
<Menu.Item>Move...</Menu.Item>
<Menu.Item>Rename...</Menu.Item>
</Menu.Group>
<Menu.Divider />
<Menu.Group>
<Menu.Item intent="danger">Delete...</Menu.Item>
</Menu.Group>
</Menu>
但是Menu.Group
, Menu.Item
和Menu,Divider
Menu.Item
错误,指出Property 'Divider' does not exist on type 'typeof Menu'
当前菜单的声明如下:
export interface IMenuProps extends ICSSProps {
is?: any;
onSelect?: any;
icon?: any;
children?: any;
secondaryText?: any;
appearance?: string;
intent?: any;
theme?: any;
}
export class Menu extends React.PureComponent<IMenuProps> {}
我对TS相当陌生,所以完全不知道如何声明它们,我尝试添加Divider: () => void;
东西Divider: () => void;
到IMenuProps,并且我尝试添加public Divider: any;
到菜单类,但没有运气(这并不令我感到惊讶)!
如果有人能指出正确的方向,我将非常感激!
谢谢!
弄清楚了! 点表示法组件需要在类内部定义为无状态功能组件,并通过该接口传递接口! 这是一个片段,以防有人需要。
export class Menu extends React.PureComponent<IMenuProps> {
public static Group: React.SFC<IMenuGroup>;
public static Divider: React.SFC<IMenuDivider>;
public static Item: React.SFC<IMenuItem>;
}
export interface IMenuGroup extends ICSSProps {
title: string;
group: string;
}
export interface IMenuDivider extends ICSSProps {
title: string;
divider: string;
}
export interface IMenuItem extends ICSSProps {
title: string;
item: string;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.