如何解决ESlint错误,类型'=> Promise <void>'从类型'Promise <void>'中缺少以下属性:然后,最后捕获[Symbol.toStringTag]
export const dbConnections: any = {};
export const connectDb: Promise<void> = async () => {
if (dbConnections.isConnected) {
return;
}
try {
const db = await mongoose.connect(config.get('mongoURI'),{
useNewUrlParser: true,useUnifiedTopology: true,useFindAndModify: false,useCreateIndex: true,});
dbConnections.isConnected = db.connections[0].readyState;
} catch (err) {
createError('Error caught connecting to db!',err);
}
};
这会引发错误,
export const connectDb: Promise<void> = async () => {
^^^^^^^^^^^^^
Type '() => Promise<void>' is missing the following properties
from type 'Promise<void>': then,catch,[Symbol.toStringTag],finally
如果我使用any
而不是Promise<void>
,则错误消失了,但这显然不是我要解决的方法。如何解决此皮棉错误?
解决方法
问题在函数声明中。您需要将返回类型指定为Promise<void>
。
export const connectDb = async (): Promise<void> => {
if (dbConnections.isConnected) {
return;
}
try {
const db = await mongoose.connect(config.get('mongoURI'),{
useNewUrlParser: true,useUnifiedTopology: true,useFindAndModify: false,useCreateIndex: true,});
dbConnections.isConnected = db.connections[0].readyState;
} catch (err) {
createError('Error caught connecting to db!',err);
}
};
,
打字稿中的异步函数是返回承诺值的函数。 您可以这样定义函数类型:
export const dbConnections: any = {};
export const connectDb: () => Promise<void> = async () => {
...
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。