Допустим, у нас есть класс, подобный следующему:
class RawResult {
private raw: string | undefined;
get exists(): boolean {
return this.raw !== undefined;
}
decode(): Result | undefined {
if (this.raw === undefined) {
return undefined;
}
return someExpensiveDecoding(this.raw);
}
}
Есть ли способ сообщить компилятору TS, что result.exists
подразумевает, что result.decode()
не будет undefined
.
Это основано на API Firestore DocumentSnapshot
, в котором у вас есть свойство exists
и метод data
. Однако, чтобы убедиться, что data()
не undefined
, нам нужно сделать что-то вроде:
const data = result.data()
if (data) {
// do something with data
}