@@ -255,25 +255,8 @@ namespace ts {
255
255
: node ;
256
256
}
257
257
258
- export function createSignatureDeclaration < T extends SignatureDeclaration > ( kind : SyntaxKind , name : string | PropertyName | undefined , typeParameters : NodeArray < TypeParameterDeclaration > | undefined , parameters : NodeArray < ParameterDeclaration > , type : TypeNode | undefined ) : T {
259
- const signatureDeclaration = createSynthesizedNode ( kind ) as T ;
260
- signatureDeclaration . name = asName ( name ) ;
261
- signatureDeclaration . typeParameters = asNodeArray ( typeParameters ) ;
262
- signatureDeclaration . type = type ;
263
- return signatureDeclaration ;
264
- }
265
-
266
- export function updateSignatureDeclaration < T extends SignatureDeclaration > ( node : T , name : string | PropertyName | undefined , typeParameters : NodeArray < TypeParameterDeclaration > | undefined , parameters : NodeArray < ParameterDeclaration > , type : TypeNode | undefined ) : T {
267
- return node . name !== name
268
- || node . typeParameters !== typeParameters
269
- || node . type !== type
270
- ? < T > updateNode ( createSignatureDeclaration ( node . kind , name , typeParameters , parameters , type ) , node )
271
- : node ;
272
- }
273
-
274
258
export function createTypeReferenceNode ( typeName : string | EntityName , typeArguments : NodeArray < TypeNode > | undefined ) {
275
259
const typeReference = createSynthesizedNode ( SyntaxKind . TypeReference ) as TypeReferenceNode ;
276
-
277
260
typeReference . typeName = isQualifiedName ( < EntityName > typeName ) ? < QualifiedName > typeName : asName ( < string | Identifier > typeName ) ;
278
261
typeReference . typeArguments = typeArguments ;
279
262
return typeReference ;
@@ -286,6 +269,16 @@ namespace ts {
286
269
: node ;
287
270
}
288
271
272
+ export function createTypeQueryNode ( exprName : EntityName ) {
273
+ const typeQueryNode = createSynthesizedNode ( SyntaxKind . TypeQuery ) as TypeQueryNode ;
274
+ typeQueryNode . exprName = exprName ;
275
+ return typeQueryNode ;
276
+ }
277
+
278
+ export function updateTypeQueryNode ( node : TypeQueryNode , exprName : EntityName ) {
279
+ return node . exprName !== exprName ? updateNode ( createTypeQueryNode ( exprName ) , node ) : node ;
280
+ }
281
+
289
282
export function createArrayTypeNode ( elementType : TypeNode ) : ArrayTypeNode {
290
283
const arrayTypeNode = createSynthesizedNode ( SyntaxKind . ArrayType ) as ArrayTypeNode ;
291
284
arrayTypeNode . elementType = elementType ;
@@ -355,6 +348,33 @@ namespace ts {
355
348
: node ;
356
349
}
357
350
351
+ export function createTypeOperatorNode ( type : TypeNode ) {
352
+ const typeOperatorNode = createSynthesizedNode ( SyntaxKind . TypeOperator ) as TypeOperatorNode ;
353
+ typeOperatorNode . operator = SyntaxKind . KeyOfKeyword ;
354
+ typeOperatorNode . type = type
355
+ return typeOperatorNode ;
356
+ }
357
+
358
+ export function updateTypeOperatorNode ( node : TypeOperatorNode , type : TypeNode ) {
359
+ return node . type !== type ? updateNode ( createTypeOperatorNode ( type ) , node ) : node ;
360
+ }
361
+
362
+ export function createIndexedAccessTypeNode ( objectType : TypeNode , indexType : TypeNode ) {
363
+ const indexedAccessTypeNode = createSynthesizedNode ( SyntaxKind . IndexedAccessType ) as IndexedAccessTypeNode ;
364
+ indexedAccessTypeNode . objectType = objectType ;
365
+ indexedAccessTypeNode . indexType = indexType ;
366
+ return indexedAccessTypeNode ;
367
+ }
368
+
369
+
370
+ export function updateIndexedAccessTypeNode ( node : IndexedAccessTypeNode , objectType : TypeNode , indexType : TypeNode ) {
371
+ return node . objectType !== objectType
372
+ || node . indexType !== indexType
373
+ ? updateNode ( createIndexedAccessTypeNode ( objectType , indexType ) , node )
374
+ : node ;
375
+ }
376
+
377
+
358
378
// Type Declarations
359
379
360
380
export function createTypeParameterDeclaration ( name : string | Identifier , constraint : TypeNode | undefined , defaultParameter : TypeNode | undefined ) {
@@ -374,6 +394,24 @@ namespace ts {
374
394
: node ;
375
395
}
376
396
397
+ export function createSignatureDeclaration < T extends SignatureDeclaration > ( kind : SyntaxKind , name : string | PropertyName | undefined , typeParameters : NodeArray < TypeParameterDeclaration > | undefined , parameters : NodeArray < ParameterDeclaration > , type : TypeNode | undefined ) : T {
398
+ const signatureDeclaration = createSynthesizedNode ( kind ) as T ;
399
+ signatureDeclaration . name = asName ( name ) ;
400
+ signatureDeclaration . typeParameters = asNodeArray ( typeParameters ) ;
401
+ signatureDeclaration . parameters = asNodeArray ( parameters ) ;
402
+ signatureDeclaration . type = type ;
403
+ return signatureDeclaration ;
404
+ }
405
+
406
+ export function updateSignatureDeclaration < T extends SignatureDeclaration > ( node : T , name : string | PropertyName | undefined , typeParameters : NodeArray < TypeParameterDeclaration > | undefined , parameters : NodeArray < ParameterDeclaration > , type : TypeNode | undefined ) : T {
407
+ return node . name !== name
408
+ || node . typeParameters !== typeParameters
409
+ || node . parameters !== parameters
410
+ || node . type !== type
411
+ ? < T > updateNode ( createSignatureDeclaration ( node . kind , name , typeParameters , parameters , type ) , node )
412
+ : node ;
413
+ }
414
+
377
415
// Signature elements
378
416
379
417
export function createPropertySignature ( name : PropertyName , questionToken : QuestionToken | undefined , type : TypeNode | undefined , initializer : Expression | undefined ) : PropertySignature {
0 commit comments