带有打字稿的 AWS 开发工具包
AWS SDK with Typescript
我不熟悉使用 typescript @types 文件。我已经安装了 aws-sdk 和@types/aws-sdk。我正在尝试调用 swf 中的列表打开工作流。第一个参数是 "ListOpenWorkflowExcusionsInput" 我看到声明为接口的类型文件。我真的需要实现这个接口还是我遗漏了什么?
import {SWF} from "aws-sdk"
import {ListOpenWorkflowExecutionsInput} from 'aws-sdk/clients/swf';
let swf:SWF = new SWF();
let params:ListOpenWorkflowExecutionsInput = new ListOpenWorkflowExecutionsInputClass();
params.domain = "domain";
//etc...
swf.listOpenWorkflowExecutions(params,function(e,d){
console.log(e);
console.log(d);
});
然后我需要定义 ListOpenWorkflowExecutionsInputClass。
export class ListOpenWorkflowExecutionsInputClass implements ListOpenWorkflowExecutionsInput{
domain: SWF.DomainName;
startTimeFilter: SWF.ExecutionTimeFilter;
typeFilter: SWF.WorkflowTypeFilter;
tagFilter: SWF.TagFilter;
nextPageToken: SWF.PageToken;
maximumPageSize: SWF.PageSize;
reverseOrder: SWF.ReverseOrder;
executionFilter: SWF.WorkflowExecutionFilter;
}
由于 TypeScript 使用结构类型,您只需创建一个包含接口中所需字段的对象文字并将其作为 params
传递,无需创建 class 并实现界面。
在您的情况下,由于您需要至少提供 domain
和 startTimeFilter
的值,根据定义文件 https://github.com/aws/aws-sdk-js/blob/master/clients/swf.d.ts,这是唯一需要的值,您可以编写:
const params = {
domain: ... // your value
startTimeFilter: ... // your value
}
这是 TypeScript 中非常常见的模式。你有定义类型的接口,你创建了对应于这些接口的对象文字并传递它们。这是可行的,因为 TypeScript 具有结构类型,即,如果一个对象具有某种类型的属性,则它可以分配给该类型,而无需显式实现该类型。
我不熟悉使用 typescript @types 文件。我已经安装了 aws-sdk 和@types/aws-sdk。我正在尝试调用 swf 中的列表打开工作流。第一个参数是 "ListOpenWorkflowExcusionsInput" 我看到声明为接口的类型文件。我真的需要实现这个接口还是我遗漏了什么?
import {SWF} from "aws-sdk"
import {ListOpenWorkflowExecutionsInput} from 'aws-sdk/clients/swf';
let swf:SWF = new SWF();
let params:ListOpenWorkflowExecutionsInput = new ListOpenWorkflowExecutionsInputClass();
params.domain = "domain";
//etc...
swf.listOpenWorkflowExecutions(params,function(e,d){
console.log(e);
console.log(d);
});
然后我需要定义 ListOpenWorkflowExecutionsInputClass。
export class ListOpenWorkflowExecutionsInputClass implements ListOpenWorkflowExecutionsInput{
domain: SWF.DomainName;
startTimeFilter: SWF.ExecutionTimeFilter;
typeFilter: SWF.WorkflowTypeFilter;
tagFilter: SWF.TagFilter;
nextPageToken: SWF.PageToken;
maximumPageSize: SWF.PageSize;
reverseOrder: SWF.ReverseOrder;
executionFilter: SWF.WorkflowExecutionFilter;
}
由于 TypeScript 使用结构类型,您只需创建一个包含接口中所需字段的对象文字并将其作为 params
传递,无需创建 class 并实现界面。
在您的情况下,由于您需要至少提供 domain
和 startTimeFilter
的值,根据定义文件 https://github.com/aws/aws-sdk-js/blob/master/clients/swf.d.ts,这是唯一需要的值,您可以编写:
const params = {
domain: ... // your value
startTimeFilter: ... // your value
}
这是 TypeScript 中非常常见的模式。你有定义类型的接口,你创建了对应于这些接口的对象文字并传递它们。这是可行的,因为 TypeScript 具有结构类型,即,如果一个对象具有某种类型的属性,则它可以分配给该类型,而无需显式实现该类型。