import { SchedulerLike } from '../types'; import { isScheduler } from '../util/isScheduler'; import { fromArray } from './fromArray'; import { empty } from './empty'; import { scalar } from './scalar'; import { Observable } from '../Observable'; export function of(a: T, scheduler?: SchedulerLike): Observable; export function of(a: T, b: T2, scheduler?: SchedulerLike): Observable; export function of(a: T, b: T2, c: T3, scheduler?: SchedulerLike): Observable; export function of(a: T, b: T2, c: T3, d: T4, scheduler?: SchedulerLike): Observable; export function of(a: T, b: T2, c: T3, d: T4, e: T5, scheduler?: SchedulerLike): Observable; export function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, scheduler?: SchedulerLike): Observable; export function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, scheduler?: SchedulerLike): Observable; export function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, scheduler?: SchedulerLike): Observable; export function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9, scheduler?: SchedulerLike): Observable; export function of(...args: Array): Observable; export function of(...args: Array): Observable { let scheduler = args[args.length - 1] as SchedulerLike; if (isScheduler(scheduler)) { args.pop(); } else { scheduler = undefined; } switch (args.length) { case 0: return empty(scheduler); case 1: return scheduler ? fromArray(args as T[], scheduler) : scalar(args[0] as T); default: return fromArray(args as T[], scheduler); } }