Promise的打字稿类型

时间:2019-04-11 08:58:48

标签: typescript knex.js

如何最好地在不使用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迁移的任何文档。

1 个答案:

答案 0 :(得分:2)

为什么返回类型为Promise<knex>

knex.schema.createTable返回一个SchemaBuilder,它扩展了ChainableInterface,并最终扩展了Bluebird<any>,因此返回类型为Promise<any[]>