Búsqueda de sitios web

[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