declare namespace tinyapp { interface IComponentLifeCycleMethods { /** * 组件生命周期函数,组件创建时触发 */ onInit?(): void; /** * 组件生命周期函数,组件创建时和更新前触发 * * @param nextProps 接收到的 props 数据 */ deriveDataFromProps?(nextProps: Partial

): void; /** * 组件生命周期函数,组件创建完毕时触发 */ didMount?(): void; /** * 组件生命周期函数,组件更新完毕时触发 */ didUpdate?(prevProps: Partial

, prevData: Partial): void; /** * 组件生命周期函数,组件删除时触发 */ didUnmount?(): void; } interface IComponentMethods { [name: string]: (...args: any[]) => void; } interface IComponentInstance extends Record { /** * 组件内部状态 */ readonly data: D; /** * 传入组件的属性 */ readonly props: P; /** * 设置data触发视图渲染 */ setData: SetDataMethod; /** * 组件所属页面实例 */ readonly $page: IPageInstance; /** * 组件 id,可直接在组件 axml 中渲染值 */ readonly $id: number; /** * 组件路径 */ readonly is: string; /** * 设置data触发视图渲染 */ $spliceData: (operations: { [k: string]: [number, number, ...any[]] }) => void; } type ComponentOptions< P extends Record = Record, D = any, M extends IComponentMethods = IComponentMethods, > = IComponentLifeCycleMethods & { /** * 组件间代码复用机制 */ mixins?: Array>; /** * 组件内部状态 */ data?: D; /** * 为外部传入的数据设置默认值 */ props?: P; /** * 组件的方法,可以是事件响应函数或任意的自定义方法 */ methods?: M & ThisType & M>; } & ThisType & M>; }