如何为Knex实例参数添加正确的TypeScript类型注解?
解决Knex实例参数的类型注解错误问题
你遇到的Cannot use namespace 'knex' as a type错误,是因为你把knex这个工厂函数的命名空间当成了类型来使用,ReturnType<knex>的写法不符合TypeScript的类型规则。
正确的做法是直接使用knex库提供的**Knex类型**(注意首字母大写),这个类型专门用来表示Knex的数据库实例。修改后的代码如下:
import knex, { Knex } from "knex"; export async function createTestTable(_knex: Knex) { // 示例:创建测试表 await _knex.schema.createTable('test_table', table => { table.increments('id').primary(); table.string('username').notNullable(); }); }
补充说明
knex是用于创建数据库实例的工厂函数,本身不是一个类型,所以不能用在ReturnType泛型里。Knex类型包含了Knex实例的所有方法和属性,能完美匹配你传入的数据库实例,同时提供完整的类型提示和校验。
内容的提问来源于stack exchange,提问作者Ken Yip
相关产品推荐
相关产品推荐

