From 374ac503d7824ecbd6f2c813e2fcefaec890dad1 Mon Sep 17 00:00:00 2001 From: Hitko Development Date: Tue, 5 May 2020 12:31:12 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20Merge=20PR=20#44476=20[mongodb]?= =?UTF-8?q?=20fix=20return=20array=20type=20for=20distinct=20by=20@HitkoDe?= =?UTF-8?q?v?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- types/mongodb/index.d.ts | 11 +++++++---- types/mongodb/test/collection/distinct.ts | 5 +++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/types/mongodb/index.d.ts b/types/mongodb/index.d.ts index 6da8649f46..cac5a50870 100644 --- a/types/mongodb/index.d.ts +++ b/types/mongodb/index.d.ts @@ -29,6 +29,7 @@ // Richard Bateman // Igor Strebezhev // Valentin Agachi +// HitkoDev // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // Minimum TypeScript Version: 3.2 @@ -44,6 +45,8 @@ import { checkServerIdentity } from 'tls'; // We can use TypeScript Omit once minimum required TypeScript Version is above 3.5 type Omit = Pick>; +type FlattenIfArray = T extends Array ? R : T; + export function connect(uri: string, options?: MongoClientOptions): Promise; export function connect(uri: string, callback: MongoCallback): void; export function connect(uri: string, options: MongoClientOptions, callback: MongoCallback): void; @@ -1012,10 +1015,10 @@ export interface Collection, options?: CommonOptions & { bypassDocumentValidation?: boolean }): Promise; deleteOne(filter: FilterQuery, options: CommonOptions & { bypassDocumentValidation?: boolean }, callback: MongoCallback): void; /** http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#distinct */ - distinct>(key: Key, callback: MongoCallback[Key]>>): void; - distinct>(key: Key, query: FilterQuery, callback: MongoCallback[Key]>>): void; - distinct>(key: Key, query?: FilterQuery, options?: MongoDistinctPreferences): Promise[Key]>>; - distinct>(key: Key, query: FilterQuery, options: MongoDistinctPreferences, callback: MongoCallback[Key]>>): void; + distinct>(key: Key, callback: MongoCallback[Key]>>>): void; + distinct>(key: Key, query: FilterQuery, callback: MongoCallback[Key]>>>): void; + distinct>(key: Key, query?: FilterQuery, options?: MongoDistinctPreferences): Promise[Key]>>>; + distinct>(key: Key, query: FilterQuery, options: MongoDistinctPreferences, callback: MongoCallback[Key]>>>): void; distinct(key: string, callback: MongoCallback): void; distinct(key: string, query: FilterQuery, callback: MongoCallback): void; distinct(key: string, query?: FilterQuery, options?: MongoDistinctPreferences): Promise; diff --git a/types/mongodb/test/collection/distinct.ts b/types/mongodb/test/collection/distinct.ts index 5b4cf6bffa..9a2b894949 100644 --- a/types/mongodb/test/collection/distinct.ts +++ b/types/mongodb/test/collection/distinct.ts @@ -6,6 +6,7 @@ async function run() { interface Collection { foo: number; nested: { num: number; }; + array: string[]; test: string; } @@ -35,4 +36,8 @@ async function run() { collection.distinct('nested.num'); // $ExpectType Promise collection.distinct('nested.num', { foo: 1 }); // $ExpectType Promise collection.distinct('nested.num', { foo: 1 }, { maxTimeMS: 400 }); // $ExpectType Promise + + collection.distinct('array'); // $ExpectType Promise + collection.distinct('array', { foo: 1 }); // $ExpectType Promise + collection.distinct('array', { foo: 1 }, { maxTimeMS: 400 }); // $ExpectType Promise }