我正在将 NodeJS 项目从 javascript 迁移到 typescript。 所以,我正在尝试添加类型。
我剩下的唯一问题是 dynamodb 查询的类型问题。
static async hasUser(user: string): Promise<boolean> {
const params = {
TableName: "users",
Key: { user }
};
const data = await new Promise((resolve, reject) => {
docClient.get(params, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
}).catch((_err) => false);
if (!data) return false;
const user = data.Item; <<----- problem is here.
return user != null;
}
当 AWS dynamodb 执行 get(...)
时,返回值实际上总是有一个 Item
属性。但是,我不知道在这里应该使用哪种类型来描述它。
我已经有了 aws-sdk
依赖项。
(根据我的阅读,@types/aws-sdk
依赖项不再是必要的,因为这些类型应该包含在 aws-sdk
依赖项中。
最佳答案
考虑像这样重写:
try {
const data: DocumentClient.GetItemOutput = await promisify((cb) => (docClient.get(params, cb)))()
return data && data.Item != null;
} catch( err ) {
return false;
}
不能 100% 确定类型 GetItemOutput
是否正确。
但目前看来是匹配的。
关于node.js - get 的响应数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58847185/