refactor(core): stronger type for resolved angular decorators (#29608)
PR Close #29608
This commit is contained in:
		
							parent
							
								
									780081def0
								
							
						
					
					
						commit
						15eb1e0ce1
					
				| @ -62,7 +62,7 @@ function getInputNamesFromMetadata( | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   const decoratorCall = decorator.node.expression as ts.CallExpression; |   const decoratorCall = decorator.node.expression; | ||||||
| 
 | 
 | ||||||
|   // In case the decorator does define any metadata, there is no metadata
 |   // In case the decorator does define any metadata, there is no metadata
 | ||||||
|   // where inputs could be declared. This is an edge case because there
 |   // where inputs could be declared. This is an edge case because there
 | ||||||
|  | |||||||
| @ -16,7 +16,7 @@ import {NgQueryDefinition, QueryTiming} from './angular/query-definition'; | |||||||
|  */ |  */ | ||||||
| export function getTransformedQueryCallExpr( | export function getTransformedQueryCallExpr( | ||||||
|     query: NgQueryDefinition, timing: QueryTiming): ts.CallExpression|null { |     query: NgQueryDefinition, timing: QueryTiming): ts.CallExpression|null { | ||||||
|   const queryExpr = query.decorator.node.expression as ts.CallExpression; |   const queryExpr = query.decorator.node.expression; | ||||||
|   const queryArguments = queryExpr.arguments; |   const queryArguments = queryExpr.arguments; | ||||||
|   const timingPropertyAssignment = ts.createPropertyAssignment( |   const timingPropertyAssignment = ts.createPropertyAssignment( | ||||||
|       'static', timing === QueryTiming.STATIC ? ts.createTrue() : ts.createFalse()); |       'static', timing === QueryTiming.STATIC ? ts.createTrue() : ts.createFalse()); | ||||||
|  | |||||||
| @ -9,9 +9,13 @@ | |||||||
| import * as ts from 'typescript'; | import * as ts from 'typescript'; | ||||||
| import {getCallDecoratorImport} from './typescript/decorators'; | import {getCallDecoratorImport} from './typescript/decorators'; | ||||||
| 
 | 
 | ||||||
|  | export type CallExpressionDecorator = ts.Decorator & { | ||||||
|  |   expression: ts.CallExpression; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| export interface NgDecorator { | export interface NgDecorator { | ||||||
|   name: string; |   name: string; | ||||||
|   node: ts.Decorator; |   node: CallExpressionDecorator; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -22,5 +26,7 @@ export function getAngularDecorators( | |||||||
|     typeChecker: ts.TypeChecker, decorators: ReadonlyArray<ts.Decorator>): NgDecorator[] { |     typeChecker: ts.TypeChecker, decorators: ReadonlyArray<ts.Decorator>): NgDecorator[] { | ||||||
|   return decorators.map(node => ({node, importData: getCallDecoratorImport(typeChecker, node)})) |   return decorators.map(node => ({node, importData: getCallDecoratorImport(typeChecker, node)})) | ||||||
|       .filter(({importData}) => importData && importData.importModule.startsWith('@angular/')) |       .filter(({importData}) => importData && importData.importModule.startsWith('@angular/')) | ||||||
|       .map(({node, importData}) => ({node, name: importData !.name})); |       .map( | ||||||
|  |           ({node, importData}) => | ||||||
|  |               ({node: node as CallExpressionDecorator, name: importData !.name})); | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user