import React, { Component } from 'react'; import PropTypes from 'prop-types'; /** * 1. 先写 interface 可选 必选 * 2. 再写defaultProps 然后将interface中有默认值的字段的可选符号删去 * 3. 最后写propTypes interface中没有可选符号 defaultProps中也没有默认值的字段需要加上isRequired */ export declare type positionType = 'top' | 'right' | 'bottom' | 'left' | 'center'; export interface Props { node?: HTMLElement; visible: boolean; position: positionType; mask: boolean; maskClosable: boolean; onClose: () => void; wrapClassName: string; contentStyle: React.CSSProperties; stopScrollUnderMask: boolean; destroyOnClose: boolean; transitionName: string; transitionDuration: number; } declare class Popup extends Component { static propTypes: { node: PropTypes.Requireable; visible: PropTypes.Requireable; position: PropTypes.Requireable; mask: PropTypes.Requireable; maskClosable: PropTypes.Requireable; onClose: PropTypes.Requireable<(...args: any[]) => any>; wrapClassName: PropTypes.Requireable; contentStyle: PropTypes.Requireable; stopScrollUnderMask: PropTypes.Requireable; destroyOnClose: PropTypes.Requireable; transitionName: PropTypes.Requireable; transitionDuration: PropTypes.Requireable; }; static defaultProps: Partial; /** * 初次渲染节点(visible:true => mount) * 后续只会隐藏(visible:false => visibility+opacity) * 或显示(visible:true => visibility+opacity)节点 * 不会删除节点(除非父组件卸载或destroyOnClose为true) */ hasFirstRendered: boolean; componentDidMount(): void; componentDidUpdate(prevProps: Props): void; componentWillUnmount(): void; handleMaskClick: () => void; get transitionName(): string; render(): JSX.Element | null; } export default Popup;