说我有一个打字稿界面:
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
界面?
答案 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 对象。