diff --git a/package-lock.json b/package-lock.json index 09d5ff18..fe91a380 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4683,9 +4683,9 @@ } }, "typescript": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.2.tgz", - "integrity": "sha1-+DlfhdRZJ2BnyYiqQYN6j4KHCEQ=", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", + "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", "dev": true }, "typings-tester": { diff --git a/package.json b/package.json index 1b676117..4c07387a 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "rimraf": "^2.6.1", "rollup": "^0.47.4", "rollup-plugin-babel": "^3.0.1", - "typescript": "^2.4.1", + "typescript": "^2.7.2", "typings-tester": "^0.2.2" }, "jest": { diff --git a/src/index.d.ts b/src/index.d.ts index 83c4122c..655dec18 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -2,7 +2,7 @@ import { createSelector } from 'reselect'; export type Selector = (state: S) => R; -export type Resolver = (state: S, ...args: any[]) => number | string; +export type Resolver = (state: S, ...args: any[]) => any; export type CreateSelectorInstance = typeof createSelector; @@ -29,7 +29,7 @@ export type OutputCachedSelector = (resolver: Resolver, optionsOrSel export type ParametricSelector = (state: S, props: P, ...args: any[]) => R; -export type ParametricResolver = (state: S, props: P, ...args: any[]) => number | string; +export type ParametricResolver = (state: S, props: P, ...args: any[]) => any; export type OutputParametricSelector = ParametricSelector & { resultFunc: C; @@ -599,9 +599,9 @@ export default function createCachedSelector T>; export interface ICacheObject { - set (key: string|number, selectorFn: any): void; - get (key: string|number): any; - remove (key: string|number): void; + set (key: any, selectorFn: any): void; + get (key: any): any; + remove (key: any): void; clear (): void; } diff --git a/typescript_test/cache.ts b/typescript_test/cache.ts index 3f26b2e0..cfdd621d 100644 --- a/typescript_test/cache.ts +++ b/typescript_test/cache.ts @@ -25,6 +25,8 @@ function testFlatCacheObject () { const cacheObject = new FlatCacheObject(); cacheObject.set('foo', () => {}); cacheObject.set(1, () => {}); + // typings:expect-error + cacheObject.set({}, () => {}); const result1: any = cacheObject.get('foo'); const result2: any = cacheObject.get(2); cacheObject.remove('foo'); @@ -50,6 +52,8 @@ function testFifoCacheObject () { const cacheObject = new FifoCacheObject({ cacheSize: 10 }); cacheObject.set('foo', () => {}); cacheObject.set(1, () => {}); + // typings:expect-error + cacheObject.set({}, () => {}); const result1: any = cacheObject.get('foo'); const result2: any = cacheObject.get(2); cacheObject.remove('foo'); @@ -75,6 +79,8 @@ function testLruCacheObject () { const cacheObject = new LruCacheObject({ cacheSize: 10 }); cacheObject.set('foo', () => {}); cacheObject.set(1, () => {}); + // typings:expect-error + cacheObject.set({}, () => {}); const result1: any = cacheObject.get('foo'); const result2: any = cacheObject.get(2); cacheObject.remove('foo'); diff --git a/typescript_test/test.ts b/typescript_test/test.ts index 1d3ec84f..f52152b0 100644 --- a/typescript_test/test.ts +++ b/typescript_test/test.ts @@ -301,18 +301,25 @@ function testArrayArgument() { } function testResolver() { - type State = {foo: string}; + type State = {foo: string, obj: { bar: string } }; const selector = createCachedSelector( (state: State) => state.foo, (state: never, arg1: number) => arg1, (state: never, arg1: number, arg2: number) => arg1 + arg2, - (foo, arg1, sum) => ({foo, arg1, sum}), + (foo, arg1, sum) => ({foo, arg1, sum}) )( - (state: never, arg1: number, arg2: number) => arg1 + arg2, + (state: never, arg1: number, arg2: number) => arg1 + arg2 ); - selector({foo: 'fizz'}, 1, 2); + selector({foo: 'fizz', obj: { bar: 'bar' } }, 1, 2); + + const selector2 = createCachedSelector( + (state: State) => state.obj, + obj => obj + )( + (state: never, obj) => obj + ); } function testCustomSelectorCreator () {