fix(ivy): incorrect type definition for ɵɵdefineComponent (#30993)
Currently the `ɵɵdefineComponent` method has incorrect type definitions the `directives` and `pipes` metadata property. The incorrect types allow developers to pass in already instantiated `DirectiveDef` or `ComponentDef` objects. This can cause unexpected failures because the definition internally only expects `Type` objects and now incorrectly tries to read the `ngDirectiveDef` or `ngComponentDef` of existing definitions. This issue has been unveiled by enabling the strict function parameter types flag, where the directive definitions are determined from each array element in the `directives` or `pipes` property (which can throw). PR Close #30993
This commit is contained in:
parent
a27c5dd740
commit
dda781ecce
|
@ -397,7 +397,7 @@ export type DirectiveDefList = (DirectiveDef<any>| ComponentDef<any>)[];
|
|||
export type DirectiveTypesOrFactory = (() => DirectiveTypeList) | DirectiveTypeList;
|
||||
|
||||
export type DirectiveTypeList =
|
||||
(DirectiveDef<any>| ComponentDef<any>|
|
||||
(DirectiveType<any>| ComponentType<any>|
|
||||
Type<any>/* Type as workaround for: Microsoft/TypeScript/issues/4881 */)[];
|
||||
|
||||
export type HostBindingsFunction<T> =
|
||||
|
@ -412,10 +412,10 @@ export type PipeDefListOrFactory = (() => PipeDefList) | PipeDefList;
|
|||
|
||||
export type PipeDefList = PipeDef<any>[];
|
||||
|
||||
export type PipeTypesOrFactory = (() => DirectiveTypeList) | DirectiveTypeList;
|
||||
export type PipeTypesOrFactory = (() => PipeTypeList) | PipeTypeList;
|
||||
|
||||
export type PipeTypeList =
|
||||
(PipeDef<any>| Type<any>/* Type as workaround for: Microsoft/TypeScript/issues/4881 */)[];
|
||||
(PipeType<any>| Type<any>/* Type as workaround for: Microsoft/TypeScript/issues/4881 */)[];
|
||||
|
||||
|
||||
// Note: This hack is necessary so we don't erroneously get a circular dependency
|
||||
|
|
Loading…
Reference in New Issue