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:
parent
96ee898cee
commit
cbbad1b791
|
@ -100,7 +100,7 @@ export class HttpClientXsrfModule {
|
||||||
/**
|
/**
|
||||||
* Disable the default XSRF protection.
|
* Disable the default XSRF protection.
|
||||||
*/
|
*/
|
||||||
static disable(): ModuleWithProviders {
|
static disable(): ModuleWithProviders<HttpClientXsrfModule> {
|
||||||
return {
|
return {
|
||||||
ngModule: HttpClientXsrfModule,
|
ngModule: HttpClientXsrfModule,
|
||||||
providers: [
|
providers: [
|
||||||
|
@ -120,7 +120,7 @@ export class HttpClientXsrfModule {
|
||||||
static withOptions(options: {
|
static withOptions(options: {
|
||||||
cookieName?: string,
|
cookieName?: string,
|
||||||
headerName?: string,
|
headerName?: string,
|
||||||
} = {}): ModuleWithProviders {
|
} = {}): ModuleWithProviders<HttpClientXsrfModule> {
|
||||||
return {
|
return {
|
||||||
ngModule: HttpClientXsrfModule,
|
ngModule: HttpClientXsrfModule,
|
||||||
providers: [
|
providers: [
|
||||||
|
|
|
@ -75,16 +75,17 @@ export interface NgModuleDef<T, Declarations, Imports, Exports> {
|
||||||
* @param T the module type. In Ivy applications, this must be explicitly
|
* @param T the module type. In Ivy applications, this must be explicitly
|
||||||
* provided.
|
* provided.
|
||||||
*/
|
*/
|
||||||
export interface ModuleWithProviders<T = any> {
|
export interface ModuleWithProviders<
|
||||||
|
T = any /** TODO(alxhub): remove default when callers pass explicit type param */> {
|
||||||
ngModule: Type<T>;
|
ngModule: Type<T>;
|
||||||
providers?: Provider[];
|
providers?: Provider[];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A schema definition associated with an NgModule.
|
* A schema definition associated with an NgModule.
|
||||||
*
|
*
|
||||||
* @see `@NgModule`, `CUSTOM_ELEMENTS_SCHEMA`, `NO_ERRORS_SCHEMA`
|
* @see `@NgModule`, `CUSTOM_ELEMENTS_SCHEMA`, `NO_ERRORS_SCHEMA`
|
||||||
*
|
*
|
||||||
* @param name The name of a defined schema.
|
* @param name The name of a defined schema.
|
||||||
*
|
*
|
||||||
* @experimental
|
* @experimental
|
||||||
|
@ -135,7 +136,7 @@ export interface NgModule {
|
||||||
/**
|
/**
|
||||||
* The set of injectable objects that are available in the injector
|
* The set of injectable objects that are available in the injector
|
||||||
* of this module.
|
* of this module.
|
||||||
*
|
*
|
||||||
* @see [Dependency Injection guide](guide/dependency-injection)
|
* @see [Dependency Injection guide](guide/dependency-injection)
|
||||||
* @see [NgModule guide](guide/providers)
|
* @see [NgModule guide](guide/providers)
|
||||||
*
|
*
|
||||||
|
@ -145,14 +146,14 @@ export interface NgModule {
|
||||||
* into any component, directive, pipe or service that is a child of this injector.
|
* into any component, directive, pipe or service that is a child of this injector.
|
||||||
* The NgModule used for bootstrapping uses the root injector, and can provide dependencies
|
* The NgModule used for bootstrapping uses the root injector, and can provide dependencies
|
||||||
* to any part of the app.
|
* to any part of the app.
|
||||||
*
|
*
|
||||||
* A lazy-loaded module has its own injector, typically a child of the app root injector.
|
* A lazy-loaded module has its own injector, typically a child of the app root injector.
|
||||||
* Lazy-loaded services are scoped to the lazy-loaded module's injector.
|
* Lazy-loaded services are scoped to the lazy-loaded module's injector.
|
||||||
* If a lazy-loaded module also provides the `UserService`, any component created
|
* If a lazy-loaded module also provides the `UserService`, any component created
|
||||||
* within that module's context (such as by router navigation) gets the local instance
|
* within that module's context (such as by router navigation) gets the local instance
|
||||||
* of the service, not the instance in the root injector.
|
* of the service, not the instance in the root injector.
|
||||||
* Components in external modules continue to receive the instance provided by their injectors.
|
* Components in external modules continue to receive the instance provided by their injectors.
|
||||||
*
|
*
|
||||||
* ### Example
|
* ### Example
|
||||||
*
|
*
|
||||||
* The following example defines a class that is injected in
|
* The following example defines a class that is injected in
|
||||||
|
@ -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
|
* The set of components, directives, and pipes declared in this
|
||||||
|
|
|
@ -228,7 +228,7 @@ function flatten<T>(values: any[]): T[] {
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
function expandModuleWithProviders(value: Type<any>| ModuleWithProviders): Type<any> {
|
function expandModuleWithProviders(value: Type<any>| ModuleWithProviders<{}>): Type<any> {
|
||||||
if (isModuleWithProviders(value)) {
|
if (isModuleWithProviders(value)) {
|
||||||
return value.ngModule;
|
return value.ngModule;
|
||||||
}
|
}
|
||||||
|
@ -244,7 +244,7 @@ function wrapReference(value: Type<any>): R3Reference {
|
||||||
return {value: wrapped, type: wrapped};
|
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;
|
return (value as{ngModule?: any}).ngModule !== undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ export class FormsModule {
|
||||||
*/
|
*/
|
||||||
static withConfig(opts: {
|
static withConfig(opts: {
|
||||||
/** @deprecated as of v6 */ warnOnDeprecatedNgFormSelector?: 'never' | 'once' | 'always',
|
/** @deprecated as of v6 */ warnOnDeprecatedNgFormSelector?: 'never' | 'once' | 'always',
|
||||||
}): ModuleWithProviders {
|
}): ModuleWithProviders<FormsModule> {
|
||||||
return {
|
return {
|
||||||
ngModule: FormsModule,
|
ngModule: FormsModule,
|
||||||
providers:
|
providers:
|
||||||
|
@ -48,7 +48,7 @@ export class FormsModule {
|
||||||
* An `NgModule` that registers the directives and providers for reactive forms.
|
* An `NgModule` that registers the directives and providers for reactive forms.
|
||||||
*
|
*
|
||||||
* @see [Reactive Forms Guide](/guide/reactive-forms)
|
* @see [Reactive Forms Guide](/guide/reactive-forms)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [REACTIVE_DRIVEN_DIRECTIVES],
|
declarations: [REACTIVE_DRIVEN_DIRECTIVES],
|
||||||
|
|
|
@ -70,7 +70,7 @@ export class ServiceWorkerModule {
|
||||||
* workers are not supported by the browser, and the service worker will not be registered.
|
* workers are not supported by the browser, and the service worker will not be registered.
|
||||||
*/
|
*/
|
||||||
static register(script: string, opts: {scope?: string; enabled?: boolean;} = {}):
|
static register(script: string, opts: {scope?: string; enabled?: boolean;} = {}):
|
||||||
ModuleWithProviders {
|
ModuleWithProviders<ServiceWorkerModule> {
|
||||||
return {
|
return {
|
||||||
ngModule: ServiceWorkerModule,
|
ngModule: ServiceWorkerModule,
|
||||||
providers: [
|
providers: [
|
||||||
|
|
|
@ -1482,11 +1482,11 @@ export declare class HttpClientModule {
|
||||||
}
|
}
|
||||||
|
|
||||||
export declare class HttpClientXsrfModule {
|
export declare class HttpClientXsrfModule {
|
||||||
static disable(): ModuleWithProviders;
|
static disable(): ModuleWithProviders<HttpClientXsrfModule>;
|
||||||
static withOptions(options?: {
|
static withOptions(options?: {
|
||||||
cookieName?: string;
|
cookieName?: string;
|
||||||
headerName?: string;
|
headerName?: string;
|
||||||
}): ModuleWithProviders;
|
}): ModuleWithProviders<HttpClientXsrfModule>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface HttpDownloadProgressEvent extends HttpProgressEvent {
|
export interface HttpDownloadProgressEvent extends HttpProgressEvent {
|
||||||
|
|
|
@ -506,7 +506,7 @@ export declare class ModuleWithComponentFactories<T> {
|
||||||
constructor(ngModuleFactory: NgModuleFactory<T>, componentFactories: ComponentFactory<any>[]);
|
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>;
|
ngModule: Type<T>;
|
||||||
providers?: Provider[];
|
providers?: Provider[];
|
||||||
}
|
}
|
||||||
|
|
|
@ -331,7 +331,7 @@ export declare class FormGroupName extends AbstractFormGroupDirective implements
|
||||||
|
|
||||||
export declare class FormsModule {
|
export declare class FormsModule {
|
||||||
static withConfig(opts: { warnOnDeprecatedNgFormSelector?: 'never' | 'once' | 'always';
|
static withConfig(opts: { warnOnDeprecatedNgFormSelector?: 'never' | 'once' | 'always';
|
||||||
}): ModuleWithProviders;
|
}): ModuleWithProviders<FormsModule>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export declare class MaxLengthValidator implements Validator, OnChanges {
|
export declare class MaxLengthValidator implements Validator, OnChanges {
|
||||||
|
|
|
@ -3,7 +3,7 @@ export declare class ServiceWorkerModule {
|
||||||
static register(script: string, opts?: {
|
static register(script: string, opts?: {
|
||||||
scope?: string;
|
scope?: string;
|
||||||
enabled?: boolean;
|
enabled?: boolean;
|
||||||
}): ModuleWithProviders;
|
}): ModuleWithProviders<ServiceWorkerModule>;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @experimental */
|
/** @experimental */
|
||||||
|
|
Loading…
Reference in New Issue