[Typescript][RxJS] ¿Por qué no hay un error de tipo al devolver un observable de tipo parcial?
Para una variable de tipo Observable<T>, intenté asignar un Observable<S> donde S es un parcial de T y me sorprendió que no haya error de asignación durante la compilación.
Me encantaría aprovechar tu conocimiento para entender la causa de este comportamiento.
// RxJS 5.3.0
// TS 2.2.2
interface Super {
a: number;
b: number;
}
interface Subset {
a: number;
}
type Maybe<T> = T | undefined;
// Both of the following produce errors
const super1: Super = {a: 1} as Subset;
const superMaybe: Maybe<Super> = { a: 1 } as Maybe<Subset>;
// But this doesn't error
const superObservable: Rx.Observable<Super> = Rx.Observable.of<Subset>({a: 1});
Respuesta #1
De hecho, esto no está relacionado con RxJS. Este es un problema de TypeScript que ya está solucionado en la futura versión 2.4. Por eso funciona cuando instalas typescript@next.
Ver: https://github.com/Microsoft/TypeScript/issues/14770