diff --git a/types/knex/index.d.ts b/types/knex/index.d.ts index 2e301af850..a7c08661d2 100644 --- a/types/knex/index.d.ts +++ b/types/knex/index.d.ts @@ -177,9 +177,8 @@ declare namespace Knex { interface Join { (raw: Raw): QueryBuilder; - (builder: QueryBuilder, clause: (this: JoinClause) => void): QueryBuilder; - (tableName: string, columns: { [key: string]: string | number | Raw }): QueryBuilder; - (tableName: string, callback: Function): QueryBuilder; + (tableName: TableName, clause: (this: JoinClause) => void): QueryBuilder; + (tableName: TableName, columns: { [key: string]: string | number | Raw }): QueryBuilder; (tableName: TableName, raw: Raw): QueryBuilder; (tableName: TableName, column1: string, column2: string): QueryBuilder; (tableName: TableName, column1: string, raw: Raw): QueryBuilder; diff --git a/types/knex/knex-tests.ts b/types/knex/knex-tests.ts index 1f12a1044a..610f51cc1f 100644 --- a/types/knex/knex-tests.ts +++ b/types/knex/knex-tests.ts @@ -213,6 +213,14 @@ knex('users') .join(knex('contacts').select('user_id', 'phone').as('contacts'), 'users.id', 'contacts.user_id') .select('users.id', 'contacts.phone'); +knex('users') + .join(knex('contacts').select('user_id', 'phone').as('contacts'), { 'users.id': 'contacts.user_id' }) + .select('users.id', 'contacts.phone'); + +knex.select('*').from('users').join(knex('accounts').select('id', 'owner_id').as('accounts'), function() { + this.on('accounts.id', '=', 'users.account_id').orOn('accounts.owner_id', '=', 'users.id') +}); + knex.select('*').from('users').join('accounts', function() { this.on('accounts.id', '=', 'users.account_id').orOn('accounts.owner_id', '=', 'users.id') });