From b8cb3a98d87d1db278b700ec35669f31e42bc258 Mon Sep 17 00:00:00 2001 From: Ben Lesh Date: Tue, 27 Aug 2019 19:06:12 -0500 Subject: [PATCH] fixup! feat(of): Update of typings --- src/internal/observable/of.ts | 4 ++-- src/internal/types.ts | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/internal/observable/of.ts b/src/internal/observable/of.ts index 10b1270a3b..ee76acd39f 100644 --- a/src/internal/observable/of.ts +++ b/src/internal/observable/of.ts @@ -1,4 +1,4 @@ -import { SchedulerLike, ArrayValueOf } from '../types'; +import { SchedulerLike, ValueFromArray } from '../types'; import { isScheduler } from '../util/isScheduler'; import { fromArray } from './fromArray'; import { Observable } from '../Observable'; @@ -36,7 +36,7 @@ export function of(): Observable; export function of(): Observable; /** @deprecated remove in v8. Do not use generic arguments directly, allow inference or cast with `as` */ export function of(value: T): Observable; -export function of>(...args: A): Observable>; +export function of>(...args: A): Observable>; /* tslint:enable:max-line-length */ /** diff --git a/src/internal/types.ts b/src/internal/types.ts index 141cd691ca..a014cc1634 100644 --- a/src/internal/types.ts +++ b/src/internal/types.ts @@ -98,8 +98,24 @@ export interface SchedulerAction extends Subscription { schedule(state?: T, delay?: number): Subscription; } +/** + * Extracts the type from an `ObservableInput`. If you have + * `O extends ObservableInput` and you pass in `Observable`, or + * `Promise`, etc, it will type as `number`. + */ export type ObservedValueOf = O extends ObservableInput ? T : never; +/** + * Extracts the generic type from an `ObservableInput[]`. + * If you have `O extends ObservableInput[]` and you pass in + * `Observable[]` or `Promise[]` you would get + * back a type of `string` + */ export type ObservedValuesFromArray = X extends Array> ? T : never; -export type ArrayValueOf = A extends Array ? T : never; \ No newline at end of file +/** + * Extracts the generic value from an Array type. + * If you have `T extends Array`, and pass a `string[]` to it, + * `ValueFromArray` will return the actual type of `string`. + */ +export type ValueFromArray = A extends Array ? T : never; \ No newline at end of file