@@ -241,7 +241,10 @@ export interface GetOptions {
241
241
readonly source?: 'default' | 'server' | 'cache';
242
242
}
243
243
244
- export class DocumentReference<T = DocumentData> {
244
+ export class DocumentReference<
245
+ T = DocumentData,
246
+ T2 extends DocumentData = DocumentData
247
+ > {
245
248
private constructor();
246
249
247
250
readonly id: string;
@@ -307,7 +310,10 @@ export interface SnapshotMetadata {
307
310
isEqual(other: SnapshotMetadata): boolean;
308
311
}
309
312
310
- export class DocumentSnapshot<T = DocumentData> {
313
+ export class DocumentSnapshot<
314
+ T = DocumentData,
315
+ T2 extends DocumentData = DocumentData
316
+ > {
311
317
protected constructor();
312
318
313
319
readonly exists: boolean;
@@ -323,8 +329,9 @@ export class DocumentSnapshot<T = DocumentData> {
323
329
}
324
330
325
331
export class QueryDocumentSnapshot<
326
- T = DocumentData
327
- > extends DocumentSnapshot<T> {
332
+ T = DocumentData,
333
+ T2 extends DocumentData = DocumentData
334
+ > extends DocumentSnapshot<T, T2> {
328
335
private constructor();
329
336
330
337
data(options?: SnapshotOptions): T;
@@ -344,7 +351,7 @@ export type WhereFilterOp =
344
351
| 'array-contains-any'
345
352
| 'not-in';
346
353
347
- export class Query<T = DocumentData> {
354
+ export class Query<T = DocumentData, T2 extends DocumentData = DocumentData > {
348
355
protected constructor();
349
356
350
357
readonly firestore: FirebaseFirestore;
@@ -409,7 +416,10 @@ export class Query<T = DocumentData> {
409
416
withConverter<U>(converter: FirestoreDataConverter<U>): Query<U>;
410
417
}
411
418
412
- export class QuerySnapshot<T = DocumentData> {
419
+ export class QuerySnapshot<
420
+ T = DocumentData,
421
+ T2 extends DocumentData = DocumentData
422
+ > {
413
423
private constructor();
414
424
415
425
readonly query: Query<T>;
@@ -430,14 +440,20 @@ export class QuerySnapshot<T = DocumentData> {
430
440
431
441
export type DocumentChangeType = 'added' | 'removed' | 'modified';
432
442
433
- export interface DocumentChange<T = DocumentData> {
443
+ export interface DocumentChange<
444
+ T = DocumentData,
445
+ T2 extends DocumentData = DocumentData
446
+ > {
434
447
readonly type: DocumentChangeType;
435
448
readonly doc: QueryDocumentSnapshot<T>;
436
449
readonly oldIndex: number;
437
450
readonly newIndex: number;
438
451
}
439
452
440
- export class CollectionReference<T = DocumentData> extends Query<T> {
453
+ export class CollectionReference<
454
+ T = DocumentData,
455
+ T2 extends DocumentData = DocumentData
456
+ > extends Query<T, T2> {
441
457
private constructor();
442
458
443
459
readonly id: string;
0 commit comments