首页 > 解决方案 > 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迁移的文档。

标签: typescriptknex.js

解决方案


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

knex.schema.createTable返回一个SchemaBuilderwhich extends ChainableInterface,它最终扩展Bluebird<any>,所以返回类型是Promise<any[]>.


推荐阅读