refactor(ivy): pre-factor: set explicit type parameters for ModuleWithProviders (#25970)

Ivy depends on having the generic type token later when reading the ModuleWithProviders from a .d.ts file.

PR Close #25970
This commit is contained in:
Alex Eagle 2018-09-14 14:55:16 -07:00 committed by Ben Lesh
parent 96ee898cee
commit cbbad1b791
9 changed files with 21 additions and 20 deletions

View File

@ -100,7 +100,7 @@ export class HttpClientXsrfModule {
/**
* Disable the default XSRF protection.
*/
static disable(): ModuleWithProviders {
static disable(): ModuleWithProviders<HttpClientXsrfModule> {
return {
ngModule: HttpClientXsrfModule,
providers: [
@ -120,7 +120,7 @@ export class HttpClientXsrfModule {
static withOptions(options: {
cookieName?: string,
headerName?: string,
} = {}): ModuleWithProviders {
} = {}): ModuleWithProviders<HttpClientXsrfModule> {
return {
ngModule: HttpClientXsrfModule,
providers: [

View File

@ -75,7 +75,8 @@ export interface NgModuleDef<T, Declarations, Imports, Exports> {
* @param T the module type. In Ivy applications, this must be explicitly
* provided.
*/
export interface ModuleWithProviders<T = any> {
export interface ModuleWithProviders<
T = any /** TODO(alxhub): remove default when callers pass explicit type param */> {
ngModule: Type<T>;
providers?: Provider[];
}
@ -236,7 +237,7 @@ export interface NgModule {
* ```
*
*/
imports?: Array<Type<any>|ModuleWithProviders|any[]>;
imports?: Array<Type<any>|ModuleWithProviders<{}>|any[]>;
/**
* The set of components, directives, and pipes declared in this

View File

@ -228,7 +228,7 @@ function flatten<T>(values: any[]): T[] {
return out;
}
function expandModuleWithProviders(value: Type<any>| ModuleWithProviders): Type<any> {
function expandModuleWithProviders(value: Type<any>| ModuleWithProviders<{}>): Type<any> {
if (isModuleWithProviders(value)) {
return value.ngModule;
}
@ -244,7 +244,7 @@ function wrapReference(value: Type<any>): R3Reference {
return {value: wrapped, type: wrapped};
}
function isModuleWithProviders(value: any): value is ModuleWithProviders {
function isModuleWithProviders(value: any): value is ModuleWithProviders<{}> {
return (value as{ngModule?: any}).ngModule !== undefined;
}

View File

@ -34,7 +34,7 @@ export class FormsModule {
*/
static withConfig(opts: {
/** @deprecated as of v6 */ warnOnDeprecatedNgFormSelector?: 'never' | 'once' | 'always',
}): ModuleWithProviders {
}): ModuleWithProviders<FormsModule> {
return {
ngModule: FormsModule,
providers:

View File

@ -70,7 +70,7 @@ export class ServiceWorkerModule {
* workers are not supported by the browser, and the service worker will not be registered.
*/
static register(script: string, opts: {scope?: string; enabled?: boolean;} = {}):
ModuleWithProviders {
ModuleWithProviders<ServiceWorkerModule> {
return {
ngModule: ServiceWorkerModule,
providers: [

View File

@ -1482,11 +1482,11 @@ export declare class HttpClientModule {
}
export declare class HttpClientXsrfModule {
static disable(): ModuleWithProviders;
static disable(): ModuleWithProviders<HttpClientXsrfModule>;
static withOptions(options?: {
cookieName?: string;
headerName?: string;
}): ModuleWithProviders;
}): ModuleWithProviders<HttpClientXsrfModule>;
}
export interface HttpDownloadProgressEvent extends HttpProgressEvent {

View File

@ -506,7 +506,7 @@ export declare class ModuleWithComponentFactories<T> {
constructor(ngModuleFactory: NgModuleFactory<T>, componentFactories: ComponentFactory<any>[]);
}
export interface ModuleWithProviders<T = any> {
export interface ModuleWithProviders<T = any /** TODO(alxhub): remove default when callers pass explicit type param */> {
ngModule: Type<T>;
providers?: Provider[];
}

View File

@ -331,7 +331,7 @@ export declare class FormGroupName extends AbstractFormGroupDirective implements
export declare class FormsModule {
static withConfig(opts: { warnOnDeprecatedNgFormSelector?: 'never' | 'once' | 'always';
}): ModuleWithProviders;
}): ModuleWithProviders<FormsModule>;
}
export declare class MaxLengthValidator implements Validator, OnChanges {

View File

@ -3,7 +3,7 @@ export declare class ServiceWorkerModule {
static register(script: string, opts?: {
scope?: string;
enabled?: boolean;
}): ModuleWithProviders;
}): ModuleWithProviders<ServiceWorkerModule>;
}
/** @experimental */