From 6b2775d9b4606067ea03bdfa553a4414edd220e9 Mon Sep 17 00:00:00 2001 From: Chris Yungmann Date: Fri, 26 Oct 2018 12:11:17 -0500 Subject: [PATCH] [jasmine] make SpyObjMethodNames more strongly-typed When a generic type argument is provided, require the method names array to only include keys of the generic type argument and for the object syntax, additionally require that the setup returned type matches the return type of the method. Requires TS 2.8 for conditional types. --- types/angular-wizard/index.d.ts | 2 +- types/frisby/index.d.ts | 2 +- types/frisby/v0/index.d.ts | 2 +- types/gulp-jasmine/index.d.ts | 2 +- types/jasmine-ajax/index.d.ts | 2 +- types/jasmine-data_driven_tests/index.d.ts | 2 +- types/jasmine-es6-promise-matchers/index.d.ts | 2 +- types/jasmine-fixture/index.d.ts | 2 +- types/jasmine-jquery/index.d.ts | 2 +- types/jasmine-matchers/index.d.ts | 2 +- types/jasmine-node/index.d.ts | 2 +- types/jasmine-promise-matchers/index.d.ts | 2 +- types/jasmine/index.d.ts | 12 +++++++++--- types/jasmine_dom_matchers/index.d.ts | 2 +- types/jasminewd2/index.d.ts | 2 +- types/karma-jasmine/index.d.ts | 2 +- types/protractor-helpers/index.d.ts | 2 +- types/saywhen/index.d.ts | 2 +- 18 files changed, 26 insertions(+), 20 deletions(-) diff --git a/types/angular-wizard/index.d.ts b/types/angular-wizard/index.d.ts index 33fa8b2b0a..fa14a2f2f7 100644 --- a/types/angular-wizard/index.d.ts +++ b/types/angular-wizard/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/mgonto/angular-wizard // Definitions by: Marko Jurisic , Ronald Wildenberg // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 import * as angular from 'angular'; diff --git a/types/frisby/index.d.ts b/types/frisby/index.d.ts index 9057edae6d..1bcd6fdabb 100644 --- a/types/frisby/index.d.ts +++ b/types/frisby/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: Christopher E. Woodland // Johnny Li // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.6 +// TypeScript Version: 2.8 /// diff --git a/types/frisby/v0/index.d.ts b/types/frisby/v0/index.d.ts index 37ccb7c15f..bb41e93321 100644 --- a/types/frisby/v0/index.d.ts +++ b/types/frisby/v0/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/vlucas/frisby // Definitions by: Johnny Li // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 /// diff --git a/types/gulp-jasmine/index.d.ts b/types/gulp-jasmine/index.d.ts index d36896d855..e1693e38cd 100644 --- a/types/gulp-jasmine/index.d.ts +++ b/types/gulp-jasmine/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/sindresorhus/gulp-jasmine#readme // Definitions by: Andrey Lalev // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 /// /// diff --git a/types/jasmine-ajax/index.d.ts b/types/jasmine-ajax/index.d.ts index 2e111a19f3..ad95004612 100644 --- a/types/jasmine-ajax/index.d.ts +++ b/types/jasmine-ajax/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/jasmine/jasmine-ajax // Definitions by: Louis Grignon // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 interface JasmineAjaxResponse { status?: number; diff --git a/types/jasmine-data_driven_tests/index.d.ts b/types/jasmine-data_driven_tests/index.d.ts index 54a7ea0441..6e6a070eaa 100644 --- a/types/jasmine-data_driven_tests/index.d.ts +++ b/types/jasmine-data_driven_tests/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/gburghardt/jasmine-data_driven_tests // Definitions by: Anthony MacKinnon // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 declare var all: JasmineDataDrivenTest; declare var xall: JasmineDataDrivenTest; diff --git a/types/jasmine-es6-promise-matchers/index.d.ts b/types/jasmine-es6-promise-matchers/index.d.ts index e80b9241c7..0a1c5360be 100644 --- a/types/jasmine-es6-promise-matchers/index.d.ts +++ b/types/jasmine-es6-promise-matchers/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/bvaughn/jasmine-es6-promise-matchers // Definitions by: Stephen Lautier // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 /// diff --git a/types/jasmine-fixture/index.d.ts b/types/jasmine-fixture/index.d.ts index 82449ffc01..cb68513a79 100644 --- a/types/jasmine-fixture/index.d.ts +++ b/types/jasmine-fixture/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/searls/jasmine-fixture // Definitions by: Craig Brett // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 /// diff --git a/types/jasmine-jquery/index.d.ts b/types/jasmine-jquery/index.d.ts index 0dc023f33a..1675992a7b 100644 --- a/types/jasmine-jquery/index.d.ts +++ b/types/jasmine-jquery/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/velesin/jasmine-jquery // Definitions by: Gregor Stamac // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 /// /// diff --git a/types/jasmine-matchers/index.d.ts b/types/jasmine-matchers/index.d.ts index e5167e2084..7284ffce49 100644 --- a/types/jasmine-matchers/index.d.ts +++ b/types/jasmine-matchers/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/uxebu/jasmine-matchers // Definitions by: Bart van der Schoor // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 /* Typings 2013 Bart van der Schoor diff --git a/types/jasmine-node/index.d.ts b/types/jasmine-node/index.d.ts index dcb55bcd2d..3270b356bd 100644 --- a/types/jasmine-node/index.d.ts +++ b/types/jasmine-node/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/mhevery/jasmine-node // Definitions by: Sven Reglitzki // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 /// diff --git a/types/jasmine-promise-matchers/index.d.ts b/types/jasmine-promise-matchers/index.d.ts index e2b3c0116e..3c05b5304e 100644 --- a/types/jasmine-promise-matchers/index.d.ts +++ b/types/jasmine-promise-matchers/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/bvaughn/jasmine-promise-matchers // Definitions by: Matthew Hill // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 /// diff --git a/types/jasmine/index.d.ts b/types/jasmine/index.d.ts index 254714ff94..8e8ca9489f 100644 --- a/types/jasmine/index.d.ts +++ b/types/jasmine/index.d.ts @@ -1,8 +1,14 @@ // Type definitions for Jasmine 2.8.0 // Project: http://jasmine.github.io/ -// Definitions by: Boris Yankov , Theodore Brown , David Pärsson , Gabe Moothart , Lukas Zech , Boris Breuer +// Definitions by: Boris Yankov +// Theodore Brown +// David Pärsson +// Gabe Moothart +// Lukas Zech +// Boris Breuer +// Chris Yungmann // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 // For ddescribe / iit use : https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/karma-jasmine/karma-jasmine.d.ts /** @@ -129,7 +135,7 @@ declare function waits(timeout?: number): void; declare namespace jasmine { type Expected = T | ObjectContaining | Any | Spy; - type SpyObjMethodNames = string[] | {[methodName: string]: any} | Array; + type SpyObjMethodNames = T extends undefined ? (ReadonlyArray | {[methodName: string]: any}) : (ReadonlyArray | {[P in keyof T]?: ReturnType any ? T[P] : any>}); var clock: () => Clock; diff --git a/types/jasmine_dom_matchers/index.d.ts b/types/jasmine_dom_matchers/index.d.ts index 5ab86cc799..b3a625f08c 100644 --- a/types/jasmine_dom_matchers/index.d.ts +++ b/types/jasmine_dom_matchers/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/charleshansen/jasmine_dom_matchers // Definitions by: Yaroslav Admin // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 /// diff --git a/types/jasminewd2/index.d.ts b/types/jasminewd2/index.d.ts index efabeaafe0..7e75d87991 100644 --- a/types/jasminewd2/index.d.ts +++ b/types/jasminewd2/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: Sammy Jelin // George Kalpakas // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 /// diff --git a/types/karma-jasmine/index.d.ts b/types/karma-jasmine/index.d.ts index ae929c6af3..73ca7a480e 100644 --- a/types/karma-jasmine/index.d.ts +++ b/types/karma-jasmine/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/karma-runner/karma-jasmine // Definitions by: Michel Salib // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 /// diff --git a/types/protractor-helpers/index.d.ts b/types/protractor-helpers/index.d.ts index bc52455d6e..686c2442be 100644 --- a/types/protractor-helpers/index.d.ts +++ b/types/protractor-helpers/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/wix/protractor-helpers // Definitions by: John Cant // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 import * as webdriver from "selenium-webdriver"; diff --git a/types/saywhen/index.d.ts b/types/saywhen/index.d.ts index 1c78d4a78e..8c2310312d 100644 --- a/types/saywhen/index.d.ts +++ b/types/saywhen/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/pushtechnology/saywhen // Definitions by: Sean Sobey // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 ///