/** * @license Use of this source code is governed by an MIT-style license that * can be found in the LICENSE file at https://github.com/cartant/rxjs-etc */ import { OperatorFunction } from "rxjs"; import { pluck as untypedPluck } from "rxjs/operators"; export function pluck( k1: K1 ): OperatorFunction; export function pluck( k1: K1, k2: K2 ): OperatorFunction; export function pluck< T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2] >(k1: K1, k2: K2, k3: K3): OperatorFunction; export function pluck< T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3] >(k1: K1, k2: K2, k3: K3, k4: K4): OperatorFunction; export function pluck< T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3], K5 extends keyof T[K1][K2][K3][K4] >( k1: K1, k2: K2, k3: K3, k4: K4, k5: K5 ): OperatorFunction; export function pluck< T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3], K5 extends keyof T[K1][K2][K3][K4], K6 extends keyof T[K1][K2][K3][K4][K5] >( k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6 ): OperatorFunction; export function pluck( ...keys: (string | number)[] ): OperatorFunction; export function pluck(...keys: any[]): OperatorFunction { return (source) => untypedPluck(...keys)(source); }