angular / angular/angularfire

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

オープン
#3,681 コメント 2 件 リアクション 1 件 担当者 0 名 GitHub で見る
comp: firestore comp: typings needs: more info type: bug version: current (v17+)
主要言語
TypeScript
スター
7.8k
フォーク
2.2k
平均マージ
22時間 28分
マージ済み PR(30日)
6

説明

## 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.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、提供された docData と DocumentReference の例で TypeScript エラーを再現し、次に Timestamp、FieldValue、WithFieldValue 周辺の Firestore 読み取り操作の型を追跡します。影響を受ける Firebase SDK のバージョンを比較し、読み取り結果が書き込み用のユニオンを取得する箇所を特定します。例がコンパイルでき、Timestamp フィールドが FieldValue 型なしで toDate() を公開すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
firebase, typescript
領域
database
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
65/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。