diff --git a/types/knex/index.d.ts b/types/knex/index.d.ts index fe8d46658a..c1fb224fa0 100644 --- a/types/knex/index.d.ts +++ b/types/knex/index.d.ts @@ -312,9 +312,9 @@ declare namespace Knex { } interface Union { - (callback: QueryCallback, wrap?: boolean): QueryBuilder; - (callbacks: QueryCallback[], wrap?: boolean): QueryBuilder; - (...callbacks: QueryCallback[]): QueryBuilder; + (callback: QueryCallback | QueryBuilder | Raw, wrap?: boolean): QueryBuilder; + (callbacks: (QueryCallback | QueryBuilder | Raw)[], wrap?: boolean): QueryBuilder; + (...callbacks: (QueryCallback | QueryBuilder | Raw)[]): QueryBuilder; // (...callbacks: QueryCallback[], wrap?: boolean): QueryInterface; } diff --git a/types/knex/knex-tests.ts b/types/knex/knex-tests.ts index 329ed9d414..0037948415 100644 --- a/types/knex/knex-tests.ts +++ b/types/knex/knex-tests.ts @@ -1145,3 +1145,19 @@ knex('characters') .whereIn(['name', 'class'], function() { this.select('name', 'class').from('characters'); }); + +knex('characters') + .select() + .where({ name: 'Bar', class: 'Fighter' }) + .union(knex('characters').select().where({ name: 'Foo', class: 'Druid' })); +knex('characters') + .select() + .where({ name: 'Bar', class: 'Fighter' }) + .union([knex('characters').select().where({ name: 'Foo', class: 'Druid' })]); +knex('characters') + .select() + .where({ name: 'Bar', class: 'Fighter' }) + .union( + knex('characters').select().where({ name: 'Foo', class: 'Druid' }), + knex('characters').select().where({ name: 'Baz', class: 'Paladin' }) + );