类型“ {}”不可分配给类型“池”。类型“ {}”中缺少属性“ config”

时间:2018-09-29 15:26:50

标签: javascript mysql typescript visual-studio-code

我不断收到此智能错误:

Type '{}' is not assignable to type 'Pool'. Property 'config' is missing in type '{}'.

下面的图片可以更好地概述正在发生的事情。 我已经尝试了大约2个小时,以了解为什么vs代码intellisense在这里抱怨。 也许另一种见解可以帮助我解决这个问题。

当然,如果我将返回类型更改为任何类型,错误都会消失,但这不是我想要的。函数声明说返回类型应该是Pool,这就是我期望的Promise of Pool对象。

我猜这是我不知道的非常愚蠢的事情。 因此,我希望提供任何解释甚至指导。

谢谢大家,祝你愉快!

部分课程没有错误

enter image description here

班级有误

enter image description here

Mysql节点库

enter image description here

tsconfig.json

enter image description here

createPool mysql节点库声明文件

enter image description here

源代码,稍作修改:

export class Database
{
...

    private static pool: Pool;

    public static async connect(): Promise<Pool>
    {
        return new Promise((resolve, reject) => {
            if (Database.pool) {
                return resolve(Database.pool);
            }

            let config: PoolConfig = {
                connectTimeout: 15,
                connectionLimit: 10,
                host: process.env.TEST_DB_HOST || 'localhost',
                user: process.env.TEST_DB_USER || 'root',
                password: process.env.TEST_DB_PASSWORD || '',
                database: process.env.TEST_DB_DATABASE || 'test'
            };

            const pool: Pool = createPool(config);

            pool.getConnection((err, connection) => {
                if (err) {
                    return reject(err);
                }

                connection.release();

                return resolve(pool);
            });
        });
    }
...
}

1 个答案:

答案 0 :(得分:2)

您尚未告诉TypeScript Promise的分辨率是什么类型,并且显然不能推断出它。更改:

return new Promise((resolve, reject) => 

return new Promise<Pool>((resolve, reject) => 
// ---------------^^^^^^