knex.js:Table 推断的 TypeScript 类型
knex.js: Table Infered TypeScript types
我正在玩 knex.js,我想尝试为我的表提供 TypeScript 支持。
关注这个http://knexjs.org/#typescript-support
我已尝试在任何地方添加这个简单的片段,但没有结果。
declare module 'knex/types/tables' {
interface Tables {
// This is same as specifying `knex<User>('users')`
users: { id: string, name: string };
}
我试过:
- 在执行查询的同一个文件之上
- 在
types.d.ts
文件中添加到 compilerOptions.types
tsconfig.json
有人成功了吗?我错过了什么?
我已将其与以下内容一起使用:
为您的自定义类型创建一个目录,(我做了 src/@types
)并添加您所有的 .d.ts
(也应该与标准 .ts
一起使用)
然后,在你的tsconfig.ts
里面添加下面的compilerOptions
"typeRoots": ["./nodemodules/@types", "./src/@types"]
然后在您的自定义类型目录中为 knex 表创建声明文件,在我的例子中 src/@types/index.d.ts
import { knex } from 'knex';
import { User } from 'path/to/your/interfaces'
declare module 'knex/types/tables' {
interface Tables {
users: User;
users_composite: Knex.CompositeTableType<
User,
Pick<User, 'name'> & Partial<Pick<User, 'created_at' | 'updated_at'>>,
Partial<Omit<User, 'id'>>
>;
}
}
注意:这只是来自官方knex的相同示例,请see了解更多信息
然后你可以使用推断类型:
const user = await db.from('users').first() // User || undefined
const user = await db.table('users').first() // User || undefined
...为了清楚起见,我的 db
变量只是作为 knex({...})
、see
导出到其他地方
我正在玩 knex.js,我想尝试为我的表提供 TypeScript 支持。
关注这个http://knexjs.org/#typescript-support
我已尝试在任何地方添加这个简单的片段,但没有结果。
declare module 'knex/types/tables' {
interface Tables {
// This is same as specifying `knex<User>('users')`
users: { id: string, name: string };
}
我试过:
- 在执行查询的同一个文件之上
- 在
types.d.ts
文件中添加到compilerOptions.types
tsconfig.json
有人成功了吗?我错过了什么?
我已将其与以下内容一起使用:
为您的自定义类型创建一个目录,(我做了 src/@types
)并添加您所有的 .d.ts
(也应该与标准 .ts
一起使用)
然后,在你的tsconfig.ts
里面添加下面的compilerOptions
"typeRoots": ["./nodemodules/@types", "./src/@types"]
然后在您的自定义类型目录中为 knex 表创建声明文件,在我的例子中 src/@types/index.d.ts
import { knex } from 'knex';
import { User } from 'path/to/your/interfaces'
declare module 'knex/types/tables' {
interface Tables {
users: User;
users_composite: Knex.CompositeTableType<
User,
Pick<User, 'name'> & Partial<Pick<User, 'created_at' | 'updated_at'>>,
Partial<Omit<User, 'id'>>
>;
}
}
注意:这只是来自官方knex的相同示例,请see了解更多信息
然后你可以使用推断类型:
const user = await db.from('users').first() // User || undefined
const user = await db.table('users').first() // User || undefined
...为了清楚起见,我的 db
变量只是作为 knex({...})
、see