From d80cb8f1f5f0d72aaed55745a0715c4748f38e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Castro?= Date: Thu, 29 Jun 2017 00:24:13 +0100 Subject: [PATCH] Improve ramda pick types --- types/ramda/index.d.ts | 138 ++++++++++++++++++++----------------- types/ramda/ramda-tests.ts | 2 +- 2 files changed, 75 insertions(+), 65 deletions(-) diff --git a/types/ramda/index.d.ts b/types/ramda/index.d.ts index ba6908d57c..49321a4497 100644 --- a/types/ramda/index.d.ts +++ b/types/ramda/index.d.ts @@ -6,6 +6,7 @@ // Matt Dziuban // Stephen King // Alejandro Fernandez Haro +// VĂ­tor Castro // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2 @@ -344,18 +345,20 @@ declare namespace R { compose(fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1, x2: V2) => T1): (x0: V0, x1: V1, x2: V2) => T5; compose(fn5: (x: T5) => T6, fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x: V0) => T1): (x: V0) => T6; - compose(fn5: (x: T5) => T6, - fn4: (x: T4) => T5, - fn3: (x: T3) => T4, - fn2: (x: T2) => T3, - fn1: (x: T1) => T2, - fn0: (x0: V0, x1: V1) => T1): (x0: V0, x1: V1) => T6; - compose(fn5: (x: T5) => T6, - fn4: (x: T4) => T5, - fn3: (x: T3) => T4, - fn2: (x: T2) => T3, - fn1: (x: T1) => T2, - fn0: (x0: V0, x1: V1, x2: V2) => T1): (x0: V0, x1: V1, x2: V2) => T6; + compose( + fn5: (x: T5) => T6, + fn4: (x: T4) => T5, + fn3: (x: T3) => T4, + fn2: (x: T2) => T3, + fn1: (x: T1) => T2, + fn0: (x0: V0, x1: V1) => T1): (x0: V0, x1: V1) => T6; + compose( + fn5: (x: T5) => T6, + fn4: (x: T4) => T5, + fn3: (x: T3) => T4, + fn2: (x: T2) => T3, + fn1: (x: T1) => T2, + fn0: (x0: V0, x1: V1, x2: V2) => T1): (x0: V0, x1: V1, x2: V2) => T6; /** * TODO composeK @@ -1181,7 +1184,7 @@ declare namespace R { * Returns a partial copy of an object containing only the keys specified. If the key does not exist, the * property is ignored. */ - pick(names: string[], obj: T): U; + pick(names: Array, obj: T): Pick; pick(names: string[]): (obj: T) => U; /** @@ -1223,59 +1226,66 @@ declare namespace R { pipe(fn0: (x: V0) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5, fn5: (x: T5) => T6): (x: V0) => T6; pipe(fn0: (x0: V0, x1: V1) => T1, fn1: (x: T1) => T2, fn2: (x: T2) => T3, fn3: (x: T3) => T4, fn4: (x: T4) => T5, fn5: (x: T5) => T6): (x0: V0, x1: V1) => T6; - pipe(fn0: (x0: V0, x1: V1, x2: V2) => T1, - fn1: (x: T1) => T2, - fn2: (x: T2) => T3, - fn3: (x: T3) => T4, - fn4: (x: T4) => T5, - fn5: (x: T5) => T6): (x0: V0, x1: V1, x2: V2) => T6; + pipe( + fn0: (x0: V0, x1: V1, x2: V2) => T1, + fn1: (x: T1) => T2, + fn2: (x: T2) => T3, + fn3: (x: T3) => T4, + fn4: (x: T4) => T5, + fn5: (x: T5) => T6): (x0: V0, x1: V1, x2: V2) => T6; - pipe(fn0: (x: V0) => T1, - fn1: (x: T1) => T2, - fn2: (x: T2) => T3, - fn3: (x: T3) => T4, - fn4: (x: T4) => T5, - fn5: (x: T5) => T6, - fn: (x: T6) => T7): (x: V0) => T7; - pipe(fn0: (x0: V0, x1: V1) => T1, - fn1: (x: T1) => T2, - fn2: (x: T2) => T3, - fn3: (x: T3) => T4, - fn4: (x: T4) => T5, - fn5: (x: T5) => T6, - fn6: (x: T6) => T7): (x0: V0, x1: V1) => T7; - pipe(fn0: (x0: V0, x1: V1, x2: V2) => T1, - fn1: (x: T1) => T2, - fn2: (x: T2) => T3, - fn3: (x: T3) => T4, - fn4: (x: T4) => T5, - fn5: (x: T5) => T6, - fn6: (x: T6) => T7): (x0: V0, x1: V1, x2: V2) => T7; + pipe( + fn0: (x: V0) => T1, + fn1: (x: T1) => T2, + fn2: (x: T2) => T3, + fn3: (x: T3) => T4, + fn4: (x: T4) => T5, + fn5: (x: T5) => T6, + fn: (x: T6) => T7): (x: V0) => T7; + pipe( + fn0: (x0: V0, x1: V1) => T1, + fn1: (x: T1) => T2, + fn2: (x: T2) => T3, + fn3: (x: T3) => T4, + fn4: (x: T4) => T5, + fn5: (x: T5) => T6, + fn6: (x: T6) => T7): (x0: V0, x1: V1) => T7; + pipe( + fn0: (x0: V0, x1: V1, x2: V2) => T1, + fn1: (x: T1) => T2, + fn2: (x: T2) => T3, + fn3: (x: T3) => T4, + fn4: (x: T4) => T5, + fn5: (x: T5) => T6, + fn6: (x: T6) => T7): (x0: V0, x1: V1, x2: V2) => T7; - pipe(fn0: (x: V0) => T1, - fn1: (x: T1) => T2, - fn2: (x: T2) => T3, - fn3: (x: T3) => T4, - fn4: (x: T4) => T5, - fn5: (x: T5) => T6, - fn6: (x: T6) => T7, - fn: (x: T7) => T8): (x: V0) => T8; - pipe(fn0: (x0: V0, x1: V1) => T1, - fn1: (x: T1) => T2, - fn2: (x: T2) => T3, - fn3: (x: T3) => T4, - fn4: (x: T4) => T5, - fn5: (x: T5) => T6, - fn6: (x: T5) => T6, - fn7: (x: T7) => T8): (x0: V0, x1: V1) => T8; - pipe(fn0: (x0: V0, x1: V1, x2: V2) => T1, - fn1: (x: T1) => T2, - fn2: (x: T2) => T3, - fn3: (x: T3) => T4, - fn4: (x: T4) => T5, - fn5: (x: T5) => T6, - fn6: (x: T5) => T6, - fn7: (x: T7) => T8): (x0: V0, x1: V1, x2: V2) => T8; + pipe( + fn0: (x: V0) => T1, + fn1: (x: T1) => T2, + fn2: (x: T2) => T3, + fn3: (x: T3) => T4, + fn4: (x: T4) => T5, + fn5: (x: T5) => T6, + fn6: (x: T6) => T7, + fn: (x: T7) => T8): (x: V0) => T8; + pipe( + fn0: (x0: V0, x1: V1) => T1, + fn1: (x: T1) => T2, + fn2: (x: T2) => T3, + fn3: (x: T3) => T4, + fn4: (x: T4) => T5, + fn5: (x: T5) => T6, + fn6: (x: T5) => T6, + fn7: (x: T7) => T8): (x0: V0, x1: V1) => T8; + pipe( + fn0: (x0: V0, x1: V1, x2: V2) => T1, + fn1: (x: T1) => T2, + fn2: (x: T2) => T3, + fn3: (x: T3) => T4, + fn4: (x: T4) => T5, + fn5: (x: T5) => T6, + fn6: (x: T5) => T6, + fn7: (x: T7) => T8): (x0: V0, x1: V1, x2: V2) => T8; /** * Returns a new list by plucking the same named property off all objects in the list supplied. diff --git a/types/ramda/ramda-tests.ts b/types/ramda/ramda-tests.ts index 70298f53e6..e78364a8ec 100644 --- a/types/ramda/ramda-tests.ts +++ b/types/ramda/ramda-tests.ts @@ -1414,7 +1414,7 @@ class Rectangle { () => { const a1 = R.pick(["a", "d"], {a: 1, b: 2, c: 3, d: 4}); // => {a: 1, d: 4} - const a2 = R.pick(["a", "e", "f"], {a: 1, b: 2, c: 3, d: 4}); // => {a: 1} + const a2 = R.pick(["a", "e", "f"], {a: 1, b: 2, c: 3, d: 4}); // => {a: 1} const a3 = R.pick(["a", "e", "f"])({a: 1, b: 2, c: 3, d: 4}); // => {a: 1} const a4 = R.pick(["a", "e", "f"], [1, 2, 3, 4]); // => {a: 1} };