AWS SDK with Typescript

时间:2018-02-21 22:27:58

标签: typescript aws-sdk-js

我是使用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;
}

1 个答案:

答案 0 :(得分:1)

由于TypeScript使用结构类型,您只需创建一个对象文字,其中包含接口所需的字段并将其作为params传递,无需创建类并实现接口。

在您的情况下,由于您需要至少提供domainstartTimeFilter的值,这是根据定义文件https://github.com/aws/aws-sdk-js/blob/master/clients/swf.d.ts唯一需要的值,您可以写:< / p>

const params = {
    domain: ... // your value
    startTimeFilter: ... // your value 
}

这是TypeScript中非常常见的模式。您有定义类型的接口,并创建与这些接口对应的对象文字并传递它们。这是因为TypeScript具有结构类型,即,如果对象具有类型的属性,则可以将其分配给该类型,而无需显式实现该类型。

相关问题