簡體   English   中英

輸入'承諾<connectionpool> & void' 缺少類型 'ConnectionPool' 中的以下屬性</connectionpool>

[英]Type 'Promise<ConnectionPool> & void' is missing the following properties from type 'ConnectionPool'

我正在嘗試建立連接並使用 mssql package 返回池。

const sqlConfig = {
    user: process.env.DB_USER,
    password: process.env.DB_PASS,
    database: process.env.DB_CATALOG,
    server: process.env.SERVER_HOST
}

export async function connect(){
    try{
        const pool = await sql.connect(sqlConfig)
        return pool
    }catch(err){
        throw err
    }
}

但是,當返回池時,我收到以下 lint 錯誤: Type 'Promise<ConnectionPool> & void' is missing the following properties from type 'ConnectionPool': connected, connecting, healthy, driver, and 26 more.

我應該如何重寫代碼以將池作為 ConnectionPool 而不是 Promise<ConnectionPool> & void 返回?

作為參考,這里是完整的代碼:

import sql, { ConnectionPool } from "mssql"
require('dotenv').config()

const sqlConfig = {
    user: process.env.DB_USER,
    password: process.env.DB_PASS,
    database: process.env.DB_CATALOG,
    server: process.env.SERVER_HOST
}

export async function connect():Promise<ConnectionPool>{
    try{
        const pool = await sql.connect(sqlConfig)
        return pool
    }catch(err){
        throw err
    }
}

我嘗試將變量轉換為 ConnectionPool 並顯式寫入預期的返回值,如下所示:

export async function connect():Promise<ConnectionPool>{
    try{
        const pool = await sql.connect(sqlConfig)
        return pool as ConnectionPool
    }catch(err){
        throw err
    }
}

我還嘗試向來自https://github.com/tediousjs/node-mssql/issues/1063的 @types/mssql package 添加重載,盡管這是一篇較舊的帖子。

您正在等待 promise 將返回值視為 ConnectionPool object 而不是 promise。

如果您希望連接返回連接池,請將返回類型更改為 ConnectionPool,如果您仍希望它返回 promise,請刪除 await,如下所示,並使用 await 調用您的連接 function

export async function connect():Promise<ConnectionPool>{
        return sql.connect(sqlConfig);
    }catch(err){
        throw err
    }
}

然后用await connect()或調用它

connect().then( (pool ) => {
   // Do something with pool here
}

我會建議 the.then 而不是 await

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM