Я пытаюсь создать подтип (ST
) универсального типа I
, который обеспечивает использование этого подтипа (ST
) объекта с подмножеством полей из этого I
, общего сопределенный тип DocumentReference
.
пример:
type SubType<Base, Condition> = Pick<
Base,
{ [Key in keyof Base]: Base[Key] extends Condition ? Key : never }[keyof Base]
>;
private joinOnField<
I,
J,
K extends keyof ST,
ST = SubType<I, DocumentReference>
>(data: ST, docRefField: K): Observable<J> {
if (!data[docRefField]) {
return of(null);
}
if ((<DocumentReference>data[docRefField]).get) {
return of(null);
}
return from(data[docRefField].get().then(snap => snap.data() as J));
}
Я получаю сообщение об ошибке: 1011 *
Преобразование типа 'ST [K]' вТип «DocumentReference» может быть ошибкой, поскольку ни один тип не совпадает с другим.Если это было сделано намеренно, сначала преобразуйте выражение в «неизвестное».
Мне показалось, что я довольно явно сказал, что в ST есть только поля типа DocumentReference
Любая помощь приветствуется!