增强事件动作里的TS类型, 以便vscode更好的提示和校验
- Dominant language
- TypeScript
- Stars
- 18.9k
- Forks
- 2.7k
- PR merge metrics
- No merged PRs in 30d
Description
#### 是否关联于某个问题吗:
现在的ListenAction是直接定义成了一个父类型, 而不是多个事件动作类型的联合类型, 导致在ts代码里使用的时候, 无法根据actionType自动提示和校验事件类型.
#### 预期的解决方案:
改造成类似SchemaObject的方案.
```typescript
// 监听器动作定义
export interface IListenerAction {
actionType: string; // 动作类型 逻辑动作|自定义(脚本支撑)|reload|url|ajax|dialog|drawer 其他扩充的组件动作
description?: string; // 事件描述,actionType: broadcast
componentId?: string; // 组件ID,用于直接执行指定组件的动作
args?: Record; // 参数,可以配置数据映射
outputVar?: string; // 输出数据变量名
preventDefault?: boolean; // 阻止原有组件的动作行为
stopPropagation?: boolean; // 阻止后续的事件处理器执行
expression?: string; // 执行条件
}
export type ListenerAction =
| IToastAction
| IBroadcastAction
| IAjaxAction
| ICmptAction
| ICopyAction
| ICustomAction
| IAlertAction
| IConfirmAction
| IDialogAction
| ICloseDialogAction
| IDrawerAction
| ICloseDrawerAction
| IEmailAction
| ILinkAction
| LogicAction
| IPageGoAction;
export interface ILogicAction extends IListenerAction {
children?: ListenerAction[]; // 子动作
}
// 逻辑动作类型,支持并行、排他(switch)、循环(支持continue和break)
export type LogicAction =
| IParallelAction
| ISwitchAction
| ILoopAction
| IContinueAction
| IBreakAction;
```
#### 其他可接受方案:
目前临时可以通过`as IToastAction`来解决.
#### 任何附加信息:
PR已经提交, 欢迎合入.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.