Вот довольно распространенный сценарий для меня:
type SomeDocument = {
foo: string;
};
export async function getSomeDocument(): Promise<SomeDocument> {
const doc = await db
.collection("some")
.doc("document")
.get();
if (!doc.exists) throw new Error("Missing some document");
return doc.data();
}
Typescript не позволяет этого, потому что тип возвращаемого значения doc.data () - DocumentSnapshot | undefined
.Почему-то я чувствую, что Typescript должен знать, что doc.data () будет возвращать DocumentSnapshot из-за проверки doc.exists, которая предшествовала ему.
Было бы это возможно с использованием правильной аннотации типа в текущемверсия Typescript?
В настоящее время я решаю эту проблему, приводя оператор return с as SomeDocument