angular / angular/angularfire

Type Error: toDate() not found on Timestamp fields in 21.0.0-rc.0

Ouverte
#3,681 2 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
comp: firestore comp: typings needs: more info type: bug version: current (v17+)
Langage dominant
TypeScript
Étoiles
7.8k
Forks
2.2k
Merge moyen
22 h 28 min
PR mergées (30 j)
6

Description

## Issue

After upgrading to `@angular/fire@21.0.0-rc.0`, TypeScript compilation fails when calling `.toDate()` on `Timestamp` fields from Firestore documents.

## Error

```
TS2339: Property 'toDate' does not exist on type 'FieldValue | WithFieldValue'.
Property 'toDate' does not exist on type 'FieldValue'.
```

## Reproduction

```typescript
import { doc, docData, Timestamp } from '@angular/fire/firestore';

interface Member {
createdAt: Timestamp;
}

const member$ = docData(doc(firestore, 'members/123') as DocumentReference);

member$.subscribe((member) => {
// ERROR: Property 'toDate' does not exist
const date = member?.createdAt.toDate();
});
```

## Environment

- @angular/fire: 21.0.0-rc.0
- @angular/core: 21.0.1
- firebase: 12.6.0 (from 11.8.0)
- TypeScript: 5.9.3

## Analysis

`Timestamp` fields are being typed as `FieldValue | WithFieldValue` instead of just `Timestamp`. The `WithFieldValue` type (meant for writes) is incorrectly being applied to read operations, causing TypeScript to think the field could be `FieldValue`, which doesn't have `.toDate()`.

This appears to be a regression from the Firebase SDK v11→v12 upgrade in this RC.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par reproduire l’erreur TypeScript dans l’exemple fourni avec docData et DocumentReference, puis suivez les types des opérations de lecture Firestore autour de Timestamp, FieldValue et WithFieldValue. Comparez les versions concernées du Firebase SDK et identifiez à quel endroit les résultats de lecture acquièrent l’union orientée écriture. Le travail est terminé lorsque l’exemple se compile et que les champs Timestamp exposent toDate() sans le type FieldValue.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
firebase, typescript
Domaine
database
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
65/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.