Promise 的打字稿类型

Typescript type for Promise

如何在没有我目前使用的 Promise: any 的情况下键入以下代码?

export const up = function(knex: knex, Promise: any): Promise<knex> {
  return Promise.all([
    knex.schema.createTable(
      'counters',
      (table: knex.TableBuilder): void => {
        table.increments('id').primary();
        table.integer('count');
      }
    ),
  ]);
};

我试过 PromiseConstructor,但返回 Promise<knex> 时出现错误。似乎找不到任何关于输入 knex.js 迁移的文档。

为什么 return 类型应该是 Promise<knex>

knex.schema.createTable returns 扩展 ChainableInterfaceSchemaBuilder,最终扩展 Bluebird<any>,所以 return 类型是 Promise<any[]>.