TypeScript中AWS SWF ListOpenWorkflowExecutionsInput接口使用疑问
关于TypeScript中使用AWS SWF ListOpenWorkflowExecutionsInput接口的疑问解答
嘿,别担心,这其实是TypeScript类型系统里非常常见的入门疑问,我来给你捋清楚:
- 不需要手动实现这个接口,也完全没必要定义对应的
ListOpenWorkflowExecutionsInputClass
原因其实很简单:
TypeScript接口是「鸭子类型」的类型约束,而非必须实现的契约
TypeScript里的接口本质上是用来做静态类型校验的,只要你传入的普通JavaScript对象结构和接口定义的字段匹配(包含所有必填字段,可选字段按需添加),TypeScript就会认可它符合这个接口类型。你根本不需要写class X implements ListOpenWorkflowExecutionsInput这种代码。举个实际的例子,你可以直接这么写:
import { SWF } from 'aws-sdk'; const swfClient = new SWF({ region: 'your-region' }); // 直接创建符合接口结构的普通对象,标注类型让TS帮你校验 const queryParams: SWF.ListOpenWorkflowExecutionsInput = { domain: 'your-swf-domain', // 必填字段 startTimeFilter: { oldestDate: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000), latestDate: new Date() }, // 可选字段比如tagFilter、typeFilter可以根据需求添加 }; // 直接把这个对象传给SDK方法就行 swfClient.listOpenWorkflowExecutions(queryParams, (err, result) => { if (err) console.error('查询失败:', err); else console.log('开启中的工作流:', result.executions); });AWS SDK接受的是普通POJO,而非类实例
AWS的JavaScript SDK底层只关心你传入的对象的键值对结构,不需要你去实例化一个特定的类。@types/aws-sdk里的这些接口只是为了给TypeScript提供类型提示和校验,运行时这些接口是不存在的,所以完全没必要额外定义类。快速排查小技巧
如果不确定哪些字段是必填的,可以直接查看@types/aws-sdk包中SWF模块下的ListOpenWorkflowExecutionsInput接口定义(IDE里按住Ctrl点击接口名就能跳转),或者参考AWS官方的SWF API文档,必填字段会有明确标记。
内容的提问来源于stack exchange,提问作者Monty
相关产品推荐
相关产品推荐

