如何将DynamoDB AttributeMap类型映射到typescript中的接口?

时间:2017-07-11 17:10:36

标签: typescript amazon-dynamodb

说我有一个打字稿界面:

interface IPerson {
    id: string,
    name: string
}

我在发电机的人员桌上进行表扫描,我希望能做的是:

const client = new AWS.DynamoDB.DocumentClient();

client.scan(params, (error, result) => {
    const people: IPerson[] = result.Items as IPerson[];
};

我收到错误Type 'AttributeMap[]' cannot be converted to type 'IPerson[]'

显然它们是不同的类型,但数据结构完全相同。我的问题是如何将发电机AttributeMap基本上投射到我的IPerson界面?

3 个答案:

答案 0 :(得分:1)

使用AttributeMap扩展IPerson接口,如下所示:

interface IPerson extends AttributeMap {
    id: string,
    name: string
}

答案 1 :(得分:1)

我已经解决了,方法是先转换为unknown

const people: IPerson[] = result.Items as unknown as IPerson[];

答案 2 :(得分:1)

正确的做法是使用AWS.DynamoDB.Converter

// Cast the result items to a type.
const people: IPerson[] = result.Items?.map((item) => Converter.unmarshall(item) as IPerson);

unmarshall() 的文档:

<块引用>

解组(数据,选项)⇒ 映射

将 DynamoDB 记录转换为 JavaScript 对象。