typescript
Version:
TypeScript is a language for application scale JavaScript development
909 lines • 64.6 kB
TypeScript
import type { ModifierFlags } from "#enums/modifierFlags";
import type { NodeFlags } from "#enums/nodeFlags";
import { SyntaxKind } from "#enums/syntaxKind";
import { TokenFlags } from "#enums/tokenFlags";
import type { JsxTagNamePropertyAccess, Node, NodeArray } from "./ast.ts";
export type TriviaSyntaxKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia | SyntaxKind.NewLineTrivia | SyntaxKind.WhitespaceTrivia | SyntaxKind.ConflictMarkerTrivia;
export type LiteralSyntaxKind = SyntaxKind.NumericLiteral | SyntaxKind.BigIntLiteral | SyntaxKind.StringLiteral | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.RegularExpressionLiteral | SyntaxKind.NoSubstitutionTemplateLiteral;
export type PseudoLiteralSyntaxKind = SyntaxKind.TemplateHead | SyntaxKind.TemplateMiddle | SyntaxKind.TemplateTail;
export type PunctuationSyntaxKind = SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.OpenParenToken | SyntaxKind.CloseParenToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.DotToken | SyntaxKind.DotDotDotToken | SyntaxKind.SemicolonToken | SyntaxKind.CommaToken | SyntaxKind.QuestionDotToken | SyntaxKind.LessThanToken | SyntaxKind.LessThanSlashToken | SyntaxKind.GreaterThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.EqualsEqualsToken | SyntaxKind.ExclamationEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.EqualsGreaterThanToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.AsteriskToken | SyntaxKind.AsteriskAsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken | SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken | SyntaxKind.ExclamationToken | SyntaxKind.TildeToken | SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken | SyntaxKind.QuestionToken | SyntaxKind.ColonToken | SyntaxKind.AtToken | SyntaxKind.QuestionQuestionToken | SyntaxKind.BacktickToken | SyntaxKind.HashToken | SyntaxKind.EqualsToken | SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.QuestionQuestionEqualsToken | SyntaxKind.CaretEqualsToken;
export type KeywordSyntaxKind = SyntaxKind.BreakKeyword | SyntaxKind.CaseKeyword | SyntaxKind.CatchKeyword | SyntaxKind.ClassKeyword | SyntaxKind.ConstKeyword | SyntaxKind.ContinueKeyword | SyntaxKind.DebuggerKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.DeleteKeyword | SyntaxKind.DoKeyword | SyntaxKind.ElseKeyword | SyntaxKind.EnumKeyword | SyntaxKind.ExportKeyword | SyntaxKind.ExtendsKeyword | SyntaxKind.FalseKeyword | SyntaxKind.FinallyKeyword | SyntaxKind.ForKeyword | SyntaxKind.FunctionKeyword | SyntaxKind.IfKeyword | SyntaxKind.ImportKeyword | SyntaxKind.InKeyword | SyntaxKind.InstanceOfKeyword | SyntaxKind.NewKeyword | SyntaxKind.NullKeyword | SyntaxKind.ReturnKeyword | SyntaxKind.SuperKeyword | SyntaxKind.SwitchKeyword | SyntaxKind.ThisKeyword | SyntaxKind.ThrowKeyword | SyntaxKind.TrueKeyword | SyntaxKind.TryKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.ImplementsKeyword | SyntaxKind.InterfaceKeyword | SyntaxKind.LetKeyword | SyntaxKind.PackageKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.StaticKeyword | SyntaxKind.YieldKeyword | SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AsKeyword | SyntaxKind.AssertsKeyword | SyntaxKind.AssertKeyword | SyntaxKind.AnyKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.AwaitKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.ConstructorKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.GetKeyword | SyntaxKind.ImmediateKeyword | SyntaxKind.InferKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.IsKeyword | SyntaxKind.KeyOfKeyword | SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword | SyntaxKind.NeverKeyword | SyntaxKind.OutKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.RequireKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.SatisfiesKeyword | SyntaxKind.SetKeyword | SyntaxKind.StringKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.TypeKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.UsingKeyword | SyntaxKind.FromKeyword | SyntaxKind.GlobalKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.OfKeyword | SyntaxKind.DeferKeyword;
export type ModifierSyntaxKind = SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.ConstKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.ExportKeyword | SyntaxKind.InKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.OutKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.StaticKeyword;
export type KeywordTypeSyntaxKind = SyntaxKind.AnyKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.NeverKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.StringKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VoidKeyword;
export type KeywordExpressionSyntaxKind = SyntaxKind.NullKeyword | SyntaxKind.TrueKeyword | SyntaxKind.FalseKeyword | SyntaxKind.ThisKeyword | SyntaxKind.SuperKeyword | SyntaxKind.ImportKeyword;
export type TokenSyntaxKind = SyntaxKind.Unknown | SyntaxKind.EndOfFile | SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia | SyntaxKind.NewLineTrivia | SyntaxKind.WhitespaceTrivia | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.NonTextFileMarkerTrivia | SyntaxKind.NumericLiteral | SyntaxKind.BigIntLiteral | SyntaxKind.StringLiteral | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.RegularExpressionLiteral | SyntaxKind.NoSubstitutionTemplateLiteral | SyntaxKind.TemplateHead | SyntaxKind.TemplateMiddle | SyntaxKind.TemplateTail | SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.OpenParenToken | SyntaxKind.CloseParenToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.DotToken | SyntaxKind.DotDotDotToken | SyntaxKind.SemicolonToken | SyntaxKind.CommaToken | SyntaxKind.QuestionDotToken | SyntaxKind.LessThanToken | SyntaxKind.LessThanSlashToken | SyntaxKind.GreaterThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.EqualsEqualsToken | SyntaxKind.ExclamationEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.EqualsGreaterThanToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.AsteriskToken | SyntaxKind.AsteriskAsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken | SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken | SyntaxKind.ExclamationToken | SyntaxKind.TildeToken | SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken | SyntaxKind.QuestionToken | SyntaxKind.ColonToken | SyntaxKind.AtToken | SyntaxKind.QuestionQuestionToken | SyntaxKind.BacktickToken | SyntaxKind.HashToken | SyntaxKind.EqualsToken | SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.QuestionQuestionEqualsToken | SyntaxKind.CaretEqualsToken | SyntaxKind.Identifier | SyntaxKind.PrivateIdentifier | SyntaxKind.JSDocCommentTextToken | SyntaxKind.BreakKeyword | SyntaxKind.CaseKeyword | SyntaxKind.CatchKeyword | SyntaxKind.ClassKeyword | SyntaxKind.ConstKeyword | SyntaxKind.ContinueKeyword | SyntaxKind.DebuggerKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.DeleteKeyword | SyntaxKind.DoKeyword | SyntaxKind.ElseKeyword | SyntaxKind.EnumKeyword | SyntaxKind.ExportKeyword | SyntaxKind.ExtendsKeyword | SyntaxKind.FalseKeyword | SyntaxKind.FinallyKeyword | SyntaxKind.ForKeyword | SyntaxKind.FunctionKeyword | SyntaxKind.IfKeyword | SyntaxKind.ImportKeyword | SyntaxKind.InKeyword | SyntaxKind.InstanceOfKeyword | SyntaxKind.NewKeyword | SyntaxKind.NullKeyword | SyntaxKind.ReturnKeyword | SyntaxKind.SuperKeyword | SyntaxKind.SwitchKeyword | SyntaxKind.ThisKeyword | SyntaxKind.ThrowKeyword | SyntaxKind.TrueKeyword | SyntaxKind.TryKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.ImplementsKeyword | SyntaxKind.InterfaceKeyword | SyntaxKind.LetKeyword | SyntaxKind.PackageKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.StaticKeyword | SyntaxKind.YieldKeyword | SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AsKeyword | SyntaxKind.AssertsKeyword | SyntaxKind.AssertKeyword | SyntaxKind.AnyKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.AwaitKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.ConstructorKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.GetKeyword | SyntaxKind.ImmediateKeyword | SyntaxKind.InferKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.IsKeyword | SyntaxKind.KeyOfKeyword | SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword | SyntaxKind.NeverKeyword | SyntaxKind.OutKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.RequireKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.SatisfiesKeyword | SyntaxKind.SetKeyword | SyntaxKind.StringKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.TypeKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.UsingKeyword | SyntaxKind.FromKeyword | SyntaxKind.GlobalKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.OfKeyword | SyntaxKind.DeferKeyword;
export type JsxTokenSyntaxKind = SyntaxKind.LessThanSlashToken | SyntaxKind.EndOfFile | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.OpenBraceToken | SyntaxKind.LessThanToken;
export type JSDocNodeSyntaxKind = SyntaxKind.JSDocTypeExpression | SyntaxKind.JSDocNameReference | SyntaxKind.JSDocAllType | SyntaxKind.JSDocNullableType | SyntaxKind.JSDocNonNullableType | SyntaxKind.JSDocOptionalType | SyntaxKind.JSDocVariadicType | SyntaxKind.JSDoc | SyntaxKind.JSDocText | SyntaxKind.JSDocTypeLiteral | SyntaxKind.JSDocSignature | SyntaxKind.JSDocLink | SyntaxKind.JSDocLinkCode | SyntaxKind.JSDocLinkPlain | SyntaxKind.JSDocUnknownTag | SyntaxKind.JSDocAugmentsTag | SyntaxKind.JSDocImplementsTag | SyntaxKind.JSDocDeprecatedTag | SyntaxKind.JSDocPublicTag | SyntaxKind.JSDocPrivateTag | SyntaxKind.JSDocProtectedTag | SyntaxKind.JSDocReadonlyTag | SyntaxKind.JSDocOverrideTag | SyntaxKind.JSDocCallbackTag | SyntaxKind.JSDocOverloadTag | SyntaxKind.JSDocParameterTag | SyntaxKind.JSDocReturnTag | SyntaxKind.JSDocThisTag | SyntaxKind.JSDocTypeTag | SyntaxKind.JSDocTemplateTag | SyntaxKind.JSDocTypedefTag | SyntaxKind.JSDocSeeTag | SyntaxKind.JSDocPropertyTag | SyntaxKind.JSDocThrowsTag | SyntaxKind.JSDocSatisfiesTag | SyntaxKind.JSDocImportTag;
export type ImportPhaseModifierSyntaxKind = SyntaxKind.TypeKeyword | SyntaxKind.DeferKeyword;
export type PostfixUnaryOperator = SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken;
export type PrefixUnaryOperator = SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.TildeToken | SyntaxKind.ExclamationToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken;
export type AssignmentOperator = SyntaxKind.EqualsToken | CompoundAssignmentOperator;
export type BinaryOperator = AssignmentOperatorOrHigher | SyntaxKind.CommaToken;
export type ExponentiationOperator = SyntaxKind.AsteriskAsteriskToken;
export type MultiplicativeOperator = SyntaxKind.AsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken;
export type MultiplicativeOperatorOrHigher = ExponentiationOperator | MultiplicativeOperator;
export type AdditiveOperator = SyntaxKind.PlusToken | SyntaxKind.MinusToken;
export type AdditiveOperatorOrHigher = MultiplicativeOperatorOrHigher | AdditiveOperator;
export type ShiftOperator = SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken;
export type ShiftOperatorOrHigher = AdditiveOperatorOrHigher | ShiftOperator;
export type RelationalOperator = SyntaxKind.LessThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.InstanceOfKeyword | SyntaxKind.InKeyword;
export type RelationalOperatorOrHigher = ShiftOperatorOrHigher | RelationalOperator;
export type EqualityOperator = SyntaxKind.EqualsEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.ExclamationEqualsToken;
export type EqualityOperatorOrHigher = RelationalOperatorOrHigher | EqualityOperator;
export type BitwiseOperator = SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken;
export type BitwiseOperatorOrHigher = EqualityOperatorOrHigher | BitwiseOperator;
export type LogicalOperator = SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken;
export type LogicalOperatorOrHigher = BitwiseOperatorOrHigher | LogicalOperator;
export type CompoundAssignmentOperator = SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.CaretEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.QuestionQuestionEqualsToken;
export type AssignmentOperatorOrHigher = SyntaxKind.QuestionQuestionToken | LogicalOperatorOrHigher | AssignmentOperator;
export type LogicalOrCoalescingAssignmentOperator = SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.QuestionQuestionEqualsToken;
export interface NodeBase extends Node {
readonly flags: NodeFlags;
}
export interface StatementBase extends NodeBase {
readonly _statementBrand: any;
}
export interface IterationStatementBase extends StatementBase {
readonly statement: Statement;
}
export interface ExpressionBase extends NodeBase {
readonly _expressionBrand: any;
}
export interface UnaryExpressionBase extends ExpressionBase {
readonly _unaryExpressionBrand: any;
}
export interface UpdateExpressionBase extends UnaryExpressionBase {
readonly _updateExpressionBrand: any;
}
export interface LeftHandSideExpressionBase extends UpdateExpressionBase {
readonly _leftHandSideExpressionBrand: any;
}
export interface MemberExpressionBase extends LeftHandSideExpressionBase {
readonly _memberExpressionBrand: any;
}
export interface PrimaryExpressionBase extends MemberExpressionBase {
readonly _primaryExpressionBrand: any;
}
export interface TypeNodeBase extends NodeBase {
readonly _typeNodeBrand: any;
}
export interface NodeWithTypeArgumentsBase extends TypeNodeBase {
readonly typeArguments?: NodeArray<TypeNode>;
}
export interface JSDocTypeBase extends TypeNodeBase {
readonly _jsDocTypeBrand: any;
}
export interface DeclarationBase extends Node {
readonly _declarationBrand: any;
}
export interface ModifiersBase extends Node {
readonly modifiers?: NodeArray<ModifierLike>;
readonly modifierFlags: ModifierFlags;
}
export interface FunctionLikeBase extends DeclarationBase {
readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
readonly parameters: NodeArray<ParameterDeclaration>;
readonly type?: TypeNode;
readonly fullSignature?: TypeNode;
}
export interface BodyBase extends Node {
readonly asteriskToken?: AsteriskToken;
readonly body?: NodeBody;
}
export interface FunctionLikeWithBodyBase extends FunctionLikeBase, BodyBase {
readonly _functionLikeDeclarationBrand: any;
readonly body?: BlockOrExpression;
}
export interface ClassLikeBase extends DeclarationBase, ModifiersBase {
readonly name?: Identifier;
readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
readonly heritageClauses?: NodeArray<HeritageClause>;
readonly members: NodeArray<ClassElement>;
}
export interface LiteralLikeNodeBase extends Node {
readonly text: string;
readonly tokenFlags: TokenFlags;
}
export interface LiteralExpressionBase extends LiteralLikeNodeBase, PrimaryExpressionBase {
readonly _literalExpressionBrand: any;
}
export interface TemplateLiteralLikeNodeBase extends LiteralLikeNodeBase {
readonly rawText: string;
readonly templateFlags: TokenFlags;
}
export interface TypeElementBase extends Node {
readonly _typeElementBrand: any;
}
export interface ClassElementBase extends Node {
readonly _classElementBrand: any;
}
export interface NamedMemberBase extends DeclarationBase, ModifiersBase {
readonly name: PropertyName;
readonly postfixToken?: QuestionToken | ExclamationToken;
}
export interface ObjectLiteralElementBase extends Node {
readonly _objectLiteralBrand: any;
}
export interface UnionOrIntersectionTypeNodeBase extends TypeNodeBase {
readonly types: NodeArray<TypeNode>;
}
export interface JSDocTagBase extends NodeBase {
readonly tagName: Identifier;
readonly comment?: NodeArray<JSDocComment>;
}
export interface JSDocCommentBase extends NodeBase {
readonly text: string;
}
export interface Token<TKind extends TokenSyntaxKind = TokenSyntaxKind> extends NodeBase {
readonly kind: TKind;
}
export interface Identifier extends PrimaryExpressionBase {
readonly kind: SyntaxKind.Identifier;
readonly text: string;
}
export interface PrivateIdentifier extends PrimaryExpressionBase {
readonly kind: SyntaxKind.PrivateIdentifier;
readonly text: string;
}
export interface QualifiedName extends NodeBase {
readonly kind: SyntaxKind.QualifiedName;
readonly left: EntityName;
readonly right: Identifier;
}
export interface ComputedPropertyName extends NodeBase {
readonly kind: SyntaxKind.ComputedPropertyName;
readonly expression: Expression;
}
export interface Decorator extends NodeBase {
readonly kind: SyntaxKind.Decorator;
readonly expression: LeftHandSideExpression;
}
export interface EmptyStatement extends StatementBase {
readonly kind: SyntaxKind.EmptyStatement;
}
export interface IfStatement extends StatementBase {
readonly kind: SyntaxKind.IfStatement;
readonly expression: Expression;
readonly thenStatement: Statement;
readonly elseStatement?: Statement;
}
export interface DoStatement extends IterationStatementBase {
readonly kind: SyntaxKind.DoStatement;
readonly expression: Expression;
}
export interface WhileStatement extends IterationStatementBase {
readonly kind: SyntaxKind.WhileStatement;
readonly expression: Expression;
}
export interface ForStatement extends IterationStatementBase {
readonly kind: SyntaxKind.ForStatement;
readonly initializer?: ForInitializer;
readonly condition?: Expression;
readonly incrementor?: Expression;
}
export interface BreakStatement extends StatementBase {
readonly kind: SyntaxKind.BreakStatement;
readonly label?: Identifier;
}
export interface ContinueStatement extends StatementBase {
readonly kind: SyntaxKind.ContinueStatement;
readonly label?: Identifier;
}
export interface ReturnStatement extends StatementBase {
readonly kind: SyntaxKind.ReturnStatement;
readonly expression?: Expression;
}
export interface WithStatement extends StatementBase {
readonly kind: SyntaxKind.WithStatement;
readonly expression: Expression;
readonly statement: Statement;
}
export interface SwitchStatement extends StatementBase {
readonly kind: SyntaxKind.SwitchStatement;
readonly expression: Expression;
readonly caseBlock: CaseBlock;
}
export interface CaseBlock extends NodeBase {
readonly kind: SyntaxKind.CaseBlock;
readonly clauses: NodeArray<CaseOrDefaultClause>;
}
export interface ThrowStatement extends StatementBase {
readonly kind: SyntaxKind.ThrowStatement;
readonly expression: Expression;
}
export interface TryStatement extends StatementBase {
readonly kind: SyntaxKind.TryStatement;
readonly tryBlock: Block;
readonly catchClause?: CatchClause;
readonly finallyBlock?: Block;
}
export interface CatchClause extends NodeBase {
readonly kind: SyntaxKind.CatchClause;
readonly variableDeclaration?: VariableDeclaration;
readonly block: Block;
}
export interface DebuggerStatement extends StatementBase {
readonly kind: SyntaxKind.DebuggerStatement;
}
export interface LabeledStatement extends StatementBase {
readonly kind: SyntaxKind.LabeledStatement;
readonly label: Identifier;
readonly statement: Statement;
}
export interface ExpressionStatement extends StatementBase {
readonly kind: SyntaxKind.ExpressionStatement;
readonly expression: Expression;
}
export interface Block extends StatementBase {
readonly kind: SyntaxKind.Block;
readonly statements: NodeArray<Statement>;
readonly multiLine: boolean;
}
export interface VariableStatement extends StatementBase, ModifiersBase {
readonly kind: SyntaxKind.VariableStatement;
readonly declarationList: VariableDeclarationList;
}
export interface VariableDeclaration extends NodeBase, DeclarationBase {
readonly kind: SyntaxKind.VariableDeclaration;
readonly name: BindingName;
readonly exclamationToken?: ExclamationToken;
readonly type?: TypeNode;
readonly initializer?: Expression;
}
export interface VariableDeclarationList extends NodeBase {
readonly kind: SyntaxKind.VariableDeclarationList;
readonly declarations: NodeArray<VariableDeclaration>;
}
export interface ParameterDeclaration extends NodeBase, DeclarationBase, ModifiersBase {
readonly kind: SyntaxKind.Parameter;
readonly dotDotDotToken?: DotDotDotToken;
readonly name: BindingName;
readonly questionToken?: QuestionToken;
readonly type?: TypeNode;
readonly initializer?: Expression;
}
export interface BindingElement extends NodeBase, DeclarationBase {
readonly kind: SyntaxKind.BindingElement;
readonly dotDotDotToken?: DotDotDotToken;
readonly propertyName?: PropertyName;
readonly name?: BindingName;
readonly initializer?: Expression;
}
export interface MissingDeclaration extends StatementBase, DeclarationBase, ModifiersBase {
readonly kind: SyntaxKind.MissingDeclaration;
}
export interface FunctionDeclaration extends DeclarationBase, StatementBase, ModifiersBase, FunctionLikeWithBodyBase {
readonly kind: SyntaxKind.FunctionDeclaration;
readonly name?: Identifier;
readonly body?: FunctionBody;
}
export interface ClassDeclaration extends DeclarationBase, StatementBase, ClassLikeBase {
readonly kind: SyntaxKind.ClassDeclaration;
}
export interface ClassExpression extends PrimaryExpressionBase, ClassLikeBase {
readonly kind: SyntaxKind.ClassExpression;
}
export interface HeritageClause extends NodeBase {
readonly kind: SyntaxKind.HeritageClause;
readonly token: SyntaxKind.ExtendsKeyword | SyntaxKind.ImplementsKeyword;
readonly types: NodeArray<ExpressionWithTypeArguments>;
}
export interface InterfaceDeclaration extends DeclarationBase, StatementBase, ModifiersBase {
readonly kind: SyntaxKind.InterfaceDeclaration;
readonly name: Identifier;
readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
readonly heritageClauses?: NodeArray<HeritageClause>;
readonly members: NodeArray<TypeElement>;
}
export interface TypeAliasDeclaration extends DeclarationBase, StatementBase, ModifiersBase {
readonly kind: SyntaxKind.TypeAliasDeclaration;
readonly name: Identifier;
readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
readonly type: TypeNode;
}
export interface EnumMember extends NodeBase, NamedMemberBase {
readonly kind: SyntaxKind.EnumMember;
readonly initializer?: Expression;
}
export interface EnumDeclaration extends DeclarationBase, StatementBase, ModifiersBase {
readonly kind: SyntaxKind.EnumDeclaration;
readonly name: Identifier;
readonly members: NodeArray<EnumMember>;
}
export interface ModuleBlock extends StatementBase {
readonly kind: SyntaxKind.ModuleBlock;
readonly statements: NodeArray<Statement>;
}
export interface NotEmittedStatement extends StatementBase {
readonly kind: SyntaxKind.NotEmittedStatement;
}
export interface NotEmittedTypeElement extends NodeBase, TypeElementBase {
readonly kind: SyntaxKind.NotEmittedTypeElement;
}
export interface ImportDeclaration extends StatementBase, ModifiersBase, DeclarationBase {
readonly kind: SyntaxKind.ImportDeclaration;
readonly importClause?: ImportClause;
readonly moduleSpecifier: Expression;
readonly attributes?: ImportAttributes;
}
export interface ExternalModuleReference extends NodeBase {
readonly kind: SyntaxKind.ExternalModuleReference;
readonly expression: Expression;
}
export interface NamespaceImport extends NodeBase, DeclarationBase {
readonly kind: SyntaxKind.NamespaceImport;
readonly name: Identifier;
}
export interface NamedImports extends NodeBase {
readonly kind: SyntaxKind.NamedImports;
readonly elements: NodeArray<ImportSpecifier>;
}
export interface ExportAssignment extends DeclarationBase, StatementBase, ModifiersBase {
readonly kind: SyntaxKind.ExportAssignment;
readonly isExportEquals: boolean;
readonly type: TypeNode;
readonly expression: Expression;
}
export interface NamespaceExportDeclaration extends DeclarationBase, StatementBase, ModifiersBase {
readonly kind: SyntaxKind.NamespaceExportDeclaration;
readonly name: Identifier;
}
export interface NamespaceExport extends NodeBase, DeclarationBase {
readonly kind: SyntaxKind.NamespaceExport;
readonly name: ModuleExportName;
}
export interface NamedExports extends NodeBase {
readonly kind: SyntaxKind.NamedExports;
readonly elements: NodeArray<ExportSpecifier>;
}
export interface ExportSpecifier extends NodeBase, DeclarationBase {
readonly kind: SyntaxKind.ExportSpecifier;
readonly isTypeOnly: boolean;
readonly propertyName?: ModuleExportName;
readonly name: ModuleExportName;
}
export interface CallSignatureDeclaration extends NodeBase, DeclarationBase, FunctionLikeBase, TypeElementBase {
readonly kind: SyntaxKind.CallSignature;
}
export interface ConstructSignatureDeclaration extends NodeBase, DeclarationBase, FunctionLikeBase, TypeElementBase {
readonly kind: SyntaxKind.ConstructSignature;
}
export interface ConstructorDeclaration extends NodeBase, DeclarationBase, ModifiersBase, FunctionLikeWithBodyBase, ClassElementBase {
readonly kind: SyntaxKind.Constructor;
readonly body?: FunctionBody;
}
export interface GetAccessorDeclaration extends NamedMemberBase, FunctionLikeWithBodyBase, TypeElementBase, ClassElementBase, ObjectLiteralElementBase, NodeBase {
readonly kind: SyntaxKind.GetAccessor;
readonly body?: FunctionBody;
}
export interface SetAccessorDeclaration extends NamedMemberBase, FunctionLikeWithBodyBase, TypeElementBase, ClassElementBase, ObjectLiteralElementBase, NodeBase {
readonly kind: SyntaxKind.SetAccessor;
readonly body?: FunctionBody;
}
export interface IndexSignatureDeclaration extends NodeBase, DeclarationBase, ModifiersBase, FunctionLikeBase, TypeElementBase, ClassElementBase {
readonly kind: SyntaxKind.IndexSignature;
readonly type: TypeNode;
}
export interface MethodSignatureDeclaration extends NodeBase, NamedMemberBase, FunctionLikeBase, TypeElementBase {
readonly kind: SyntaxKind.MethodSignature;
}
export interface MethodDeclaration extends NodeBase, NamedMemberBase, FunctionLikeWithBodyBase, ClassElementBase, ObjectLiteralElementBase {
readonly kind: SyntaxKind.MethodDeclaration;
readonly body?: FunctionBody;
}
export interface PropertySignatureDeclaration extends NodeBase, NamedMemberBase, TypeElementBase {
readonly kind: SyntaxKind.PropertySignature;
readonly type: TypeNode;
readonly initializer: Expression;
}
export interface PropertyDeclaration extends NodeBase, NamedMemberBase, ClassElementBase {
readonly kind: SyntaxKind.PropertyDeclaration;
readonly type?: TypeNode;
readonly initializer?: Expression;
}
export interface SemicolonClassElement extends NodeBase, DeclarationBase, ClassElementBase {
readonly kind: SyntaxKind.SemicolonClassElement;
}
export interface ClassStaticBlockDeclaration extends NodeBase, DeclarationBase, ModifiersBase, ClassElementBase {
readonly kind: SyntaxKind.ClassStaticBlockDeclaration;
readonly body: Block;
}
export interface OmittedExpression extends ExpressionBase {
readonly kind: SyntaxKind.OmittedExpression;
}
export interface KeywordExpression<TKind extends KeywordExpressionSyntaxKind = KeywordExpressionSyntaxKind> extends ExpressionBase {
readonly kind: TKind;
}
export interface StringLiteral extends LiteralExpressionBase {
readonly kind: SyntaxKind.StringLiteral;
}
export interface NumericLiteral extends LiteralExpressionBase {
readonly kind: SyntaxKind.NumericLiteral;
}
export interface BigIntLiteral extends LiteralExpressionBase {
readonly kind: SyntaxKind.BigIntLiteral;
}
export interface RegularExpressionLiteral extends LiteralExpressionBase {
readonly kind: SyntaxKind.RegularExpressionLiteral;
}
export interface NoSubstitutionTemplateLiteral extends ExpressionBase, TemplateLiteralLikeNodeBase, DeclarationBase {
readonly kind: SyntaxKind.NoSubstitutionTemplateLiteral;
}
export interface BinaryExpression extends ExpressionBase, DeclarationBase, ModifiersBase {
readonly kind: SyntaxKind.BinaryExpression;
readonly left: Expression;
readonly type?: TypeNode;
readonly operatorToken: BinaryOperatorToken;
readonly right: Expression;
}
export interface PrefixUnaryExpression extends UpdateExpressionBase {
readonly kind: SyntaxKind.PrefixUnaryExpression;
readonly operator: SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.TildeToken | SyntaxKind.ExclamationToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken;
readonly operand: Expression;
}
export interface PostfixUnaryExpression extends UpdateExpressionBase {
readonly kind: SyntaxKind.PostfixUnaryExpression;
readonly operand: Expression;
readonly operator: SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken;
}
export interface YieldExpression extends ExpressionBase {
readonly kind: SyntaxKind.YieldExpression;
readonly asteriskToken?: AsteriskToken;
readonly expression?: Expression;
}
export interface ArrowFunction extends ExpressionBase, DeclarationBase, ModifiersBase, FunctionLikeWithBodyBase {
readonly kind: SyntaxKind.ArrowFunction;
readonly equalsGreaterThanToken: EqualsGreaterThanToken;
readonly body: ConciseBody;
}
export interface FunctionExpression extends PrimaryExpressionBase, DeclarationBase, ModifiersBase, FunctionLikeWithBodyBase {
readonly kind: SyntaxKind.FunctionExpression;
readonly name?: Identifier;
readonly body: FunctionBody;
}
export interface AsExpression extends ExpressionBase {
readonly kind: SyntaxKind.AsExpression;
readonly expression: Expression;
readonly type: TypeNode;
}
export interface SatisfiesExpression extends ExpressionBase {
readonly kind: SyntaxKind.SatisfiesExpression;
readonly expression: Expression;
readonly type: TypeNode;
}
export interface ConditionalExpression extends ExpressionBase {
readonly kind: SyntaxKind.ConditionalExpression;
readonly condition: Expression;
readonly questionToken: QuestionToken;
readonly whenTrue: Expression;
readonly colonToken: ColonToken;
readonly whenFalse: Expression;
}
export interface PropertyAccessExpression extends MemberExpressionBase {
readonly kind: SyntaxKind.PropertyAccessExpression;
readonly expression: Expression;
readonly questionDotToken?: QuestionDotToken;
readonly name: MemberName;
}
export interface ElementAccessExpression extends MemberExpressionBase {
readonly kind: SyntaxKind.ElementAccessExpression;
readonly expression: Expression;
readonly questionDotToken?: QuestionDotToken;
readonly argumentExpression: Expression;
}
export interface CallExpression extends LeftHandSideExpressionBase, DeclarationBase {
readonly kind: SyntaxKind.CallExpression;
readonly expression: Expression;
readonly questionDotToken?: QuestionDotToken;
readonly typeArguments?: NodeArray<TypeNode>;
readonly arguments: NodeArray<Expression>;
}
export interface NewExpression extends PrimaryExpressionBase {
readonly kind: SyntaxKind.NewExpression;
readonly expression: Expression;
readonly typeArguments?: NodeArray<TypeNode>;
readonly arguments?: NodeArray<Expression>;
}
export interface MetaProperty extends PrimaryExpressionBase {
readonly kind: SyntaxKind.MetaProperty;
readonly keywordToken: SyntaxKind.ImportKeyword | SyntaxKind.NewKeyword;
readonly name: Identifier;
}
export interface NonNullExpression extends LeftHandSideExpressionBase {
readonly kind: SyntaxKind.NonNullExpression;
readonly expression: Expression;
}
export interface SpreadElement extends ExpressionBase {
readonly kind: SyntaxKind.SpreadElement;
readonly expression: Expression;
}
export interface TemplateExpression extends PrimaryExpressionBase {
readonly kind: SyntaxKind.TemplateExpression;
readonly head: TemplateHead;
readonly templateSpans: NodeArray<TemplateSpan>;
}
export interface TemplateSpan extends NodeBase {
readonly kind: SyntaxKind.TemplateSpan;
readonly expression: Expression;
readonly literal: TemplateMiddleOrTail;
}
export interface TaggedTemplateExpression extends MemberExpressionBase {
readonly kind: SyntaxKind.TaggedTemplateExpression;
readonly tag: Expression;
readonly questionDotToken: QuestionDotToken;
readonly typeArguments?: NodeArray<TypeNode>;
readonly template: TemplateLiteral;
}
export interface ParenthesizedExpression extends PrimaryExpressionBase {
readonly kind: SyntaxKind.ParenthesizedExpression;
readonly expression: Expression;
}
export interface ArrayLiteralExpression extends PrimaryExpressionBase {
readonly kind: SyntaxKind.ArrayLiteralExpression;
readonly elements: NodeArray<Expression>;
readonly multiLine: boolean;
}
export interface ObjectLiteralExpression extends PrimaryExpressionBase, DeclarationBase {
readonly kind: SyntaxKind.ObjectLiteralExpression;
readonly properties: NodeArray<ObjectLiteralElementLike>;
readonly multiLine: boolean;
}
export interface SpreadAssignment extends NodeBase, DeclarationBase, ObjectLiteralElementBase {
readonly kind: SyntaxKind.SpreadAssignment;
readonly expression: Expression;
}
export interface PropertyAssignment extends NodeBase, NamedMemberBase, ObjectLiteralElementBase {
readonly kind: SyntaxKind.PropertyAssignment;
readonly type: TypeNode;
readonly initializer: Expression;
}
export interface ShorthandPropertyAssignment extends NodeBase, NamedMemberBase, ObjectLiteralElementBase {
readonly kind: SyntaxKind.ShorthandPropertyAssignment;
readonly type: TypeNode;
readonly equalsToken?: EqualsToken;
readonly objectAssignmentInitializer?: Expression;
}
export interface DeleteExpression extends UnaryExpressionBase {
readonly kind: SyntaxKind.DeleteExpression;
readonly expression: Expression;
}
export interface TypeOfExpression extends UnaryExpressionBase {
readonly kind: SyntaxKind.TypeOfExpression;
readonly expression: Expression;
}
export interface VoidExpression extends UnaryExpressionBase {
readonly kind: SyntaxKind.VoidExpression;
readonly expression: Expression;
}
export interface AwaitExpression extends UnaryExpressionBase {
readonly kind: SyntaxKind.AwaitExpression;
readonly expression: Expression;
}
export interface TypeAssertion extends UnaryExpressionBase {
readonly kind: SyntaxKind.TypeAssertionExpression;
readonly type: TypeNode;
readonly expression: Expression;
}
export interface KeywordTypeNode<TKind extends KeywordTypeSyntaxKind = KeywordTypeSyntaxKind> extends TypeNodeBase {
readonly kind: TKind;
}
export interface UnionTypeNode extends TypeNodeBase, UnionOrIntersectionTypeNodeBase {
readonly kind: SyntaxKind.UnionType;
}
export interface IntersectionTypeNode extends TypeNodeBase, UnionOrIntersectionTypeNodeBase {
readonly kind: SyntaxKind.IntersectionType;
}
export interface ConditionalTypeNode extends TypeNodeBase {
readonly kind: SyntaxKind.ConditionalType;
readonly checkType: TypeNode;
readonly extendsType: TypeNode;
readonly trueType: TypeNode;
readonly falseType: TypeNode;
}
export interface TypeOperatorNode extends TypeNodeBase {
readonly kind: SyntaxKind.TypeOperator;
readonly operator: SyntaxKind.KeyOfKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.UniqueKeyword;
readonly type: TypeNode;
}
export interface InferTypeNode extends TypeNodeBase {
readonly kind: SyntaxKind.InferType;
readonly typeParameter: TypeParameterDeclaration;
}
export interface ArrayTypeNode extends TypeNodeBase {
readonly kind: SyntaxKind.ArrayType;
readonly elementType: TypeNode;
}
export interface IndexedAccessTypeNode extends TypeNodeBase {
readonly kind: SyntaxKind.IndexedAccessType;
readonly objectType: TypeNode;
readonly indexType: TypeNode;
}
export interface TypeReferenceNode extends NodeWithTypeArgumentsBase {
readonly kind: SyntaxKind.TypeReference;
readonly typeName: EntityName;
}
export interface ExpressionWithTypeArguments extends MemberExpressionBase {
readonly kind: SyntaxKind.ExpressionWithTypeArguments;
readonly expression: Expression;
readonly typeArguments?: NodeArray<TypeNode>;
}
export interface LiteralTypeNode extends TypeNodeBase {
readonly kind: SyntaxKind.LiteralType;
readonly literal: Node;
}
export interface ThisTypeNode extends TypeNodeBase {
readonly kind: SyntaxKind.ThisType;
}
export interface TypePredicateNode extends TypeNodeBase {
readonly kind: SyntaxKind.TypePredicate;
readonly assertsModifier?: AssertsKeyword;
readonly parameterName: TypePredicateParameterName;
readonly type?: TypeNode;
}
export interface ImportAttribute extends NodeBase {
readonly kind: SyntaxKind.ImportAttribute;
readonly name: ImportAttributeName;
readonly value: Expression;
}
export interface ImportAttributes extends NodeBase {
readonly kind: SyntaxKind.ImportAttributes;
readonly token: SyntaxKind.WithKeyword | SyntaxKind.AssertKeyword;
readonly attributes: NodeArray<ImportAttribute>;
readonly multiLine: boolean;
}
export interface TypeQueryNode extends NodeWithTypeArgumentsBase {
readonly kind: SyntaxKind.TypeQuery;
readonly exprName: EntityName;
}
export interface MappedTypeNode extends TypeNodeBase, DeclarationBase {
readonly kind: SyntaxKind.MappedType;
readonly readonlyToken?: ReadonlyKeyword | PlusToken | MinusToken;
readonly typeParameter: TypeParameterDeclaration;
readonly nameType?: TypeNode;
readonly questionToken?: QuestionToken | PlusToken | MinusToken;
readonly type?: TypeNode;
readonly members?: NodeArray<TypeElement>;
}
export interface TypeLiteralNode extends TypeNodeBase, DeclarationBase {
readonly kind: SyntaxKind.TypeLiteral;
readonly members: NodeArray<TypeElement>;
}
export interface TupleTypeNode extends TypeNodeBase {
readonly kind: SyntaxKind.TupleType;
readonly elements: NodeArray<TypeNode>;
}
export interface NamedTupleMember extends TypeNodeBase, DeclarationBase {
readonly kind: SyntaxKind.NamedTupleMember;
readonly dotDotDotToken?: DotDotDotToken;
readonly name: Identifier;
readonly questionToken?: QuestionToken;
readonly type: TypeNode;
}
export interface OptionalTypeNode extends TypeNodeBase {
readonly kind: SyntaxKind.OptionalType;
readonly type: TypeNode;
}
export interface RestTypeNode extends TypeNodeBase {
readonly kind: SyntaxKind.RestType;
readonly type: TypeNode;
}
export interface ParenthesizedTypeNode extends TypeNodeBase {
readonly kind: SyntaxKind.ParenthesizedType;
readonly type: TypeNode;
}
export interface FunctionTypeNode extends TypeNodeBase, ModifiersBase, FunctionLikeBase {
readonly kind: SyntaxKind.FunctionType;
}
export interface ConstructorTypeNode extends TypeNodeBase, ModifiersBase, FunctionLikeBase {
readonly kind: SyntaxKind.ConstructorType;
}
export interface TemplateHead extends NodeBase, TemplateLiteralLikeNodeBase {
readonly kind: SyntaxKind.TemplateHead;
}
export interface TemplateMiddle extends NodeBase, TemplateLiteralLikeNodeBase {
readonly kind: SyntaxKind.TemplateMiddle;
}
export interface TemplateTail extends NodeBase, TemplateLiteralLikeNodeBase {
readonly kind: SyntaxKind.TemplateTail;
}
export interface TemplateLiteralTypeNode extends TypeNodeBase {
readonly kind: SyntaxKind.TemplateLiteralType;
readonly head: TemplateHead;
readonly templateSpans: NodeArray<TemplateLiteralTypeSpan>;
}
export interface TemplateLiteralTypeSpan extends TypeNodeBase {
readonly kind: SyntaxKind.TemplateLiteralTypeSpan;
readonly type: TypeNode;
readonly literal: TemplateMiddleOrTail;
}
export interface SyntheticExpression extends ExpressionBase {
readonly kind: SyntaxKind.SyntheticExpression;
readonly type: any;
readonly isSpread: boolean;
readonly tupleNameSource?: Node;
}
export interface PartiallyEmittedExpression extends LeftHandSideExpressionBase {
readonly kind: SyntaxKind.PartiallyEmittedExpression;
readonly expression: Expression;
}
export interface JsxElement extends PrimaryExpressionBase {
readonly kind: SyntaxKind.JsxElement;
readonly openingElement: JsxOpeningElement;
readonly children: NodeArray<JsxChild>;
readonly closingElement: JsxClosingElement;
}
export interface JsxAttributes extends PrimaryExpressionBase, DeclarationBase {
readonly kind: SyntaxKind.JsxAttributes;
readonly properties: NodeArray<JsxAttributeLike>;
}
export interface JsxNamespacedName extends ExpressionBase {
readonly kind: SyntaxKind.JsxNamespacedName;
readonly namespace: Identifier;
readonly name: Identifier;
}
export interface JsxOpeningElement extends ExpressionBase {
readonly kind: SyntaxKind.JsxOpeningElement;
readonly tagName: JsxTagNameExpression;
readonly typeArguments?: NodeArray<TypeNode>;
readonly attributes: JsxAttributes;
}
export interface JsxSelfClosingElement extends PrimaryExpressionBase {
readonly kind: SyntaxKind.JsxSelfClosingElement;
readonly tagName: JsxTagNameExpression;
readonly typeArguments?: NodeArray<TypeNode>;
readonly attributes: JsxAttributes;
}
export interface JsxFragment extends PrimaryExpressionBase {
readonly kind: SyntaxKind.JsxFragment;
readonly openingFragment: JsxOpeningFragment;
readonly children: NodeArray<JsxChild>;
readonly closingFragment: JsxClosingFragment;
}
export interface JsxOpeningFragment extends ExpressionBase {
readonly kind: SyntaxKind.JsxOpeningFragment;
}
export interface JsxClosingFragment extends ExpressionBase {
readonly kind: SyntaxKind.JsxClosingFragment;
}
export interface JsxAttribute extends NodeBase, DeclarationBase {
readonly kind: SyntaxKind.JsxAttribute;
readonly name: JsxAttributeName;
readonly initializer?: JsxAttributeValue;
}
export interface JsxSpreadAttribute extends ObjectLiteralElementBase, NodeBase {
readonly kind: SyntaxKind.JsxSpreadAttribute;
readonly expression: Expression;
}
export interface JsxClosingElement extends NodeBase {
readonly kind: SyntaxKind.JsxClosingElement;
readonly tagName: JsxTagNameExpression;
}
export interface JsxExpression extends ExpressionBase {
readonly kind: SyntaxKind.JsxExpression;
readonly dotDotDotToken?: DotDotDotToken;
readonly expression?: Expression;
}
export interface JsxText extends ExpressionBase, LiteralLikeNodeBase {
readonly kind: SyntaxKind.JsxText;
readonly containsOnlyTriviaWhiteSpaces: boolean;
}
export interface SyntaxList extends NodeBase {
readonly kind: SyntaxKind.SyntaxList;
readonly children: readonly Node[];
}
export interface JSDoc extends NodeBase {
readonly kind: SyntaxKind.JSDoc;
readonly comment: NodeArray<JSDocComment>;
readonly tags?: NodeArray<JSDocTag>;
}
export interface JSDocTypeExpression extends TypeNodeBase {
readonly kind: SyntaxKind.JSDocTypeExpression;
readonly type: TypeNode;
}
export interface JSDocNonNullableType extends JSDocTypeBase {
readonly kind: SyntaxKind.JSDocNonNullableType;
readonly type: TypeNode;
}
export interface JSDocNullableType extends JSDocTypeBase {
readonly kind: SyntaxKind.JSDocNullableType;
readonly type: TypeNode;
}
export interface JSDocAllType extends JSDocTypeBase {
readonly kind: SyntaxKind.JSDocAllType;
}
export interface JSDocVariadicType extends JSDocTypeBase {
readonly kind: SyntaxKind.JSDocVariadicType;
readonly type: TypeNode;
}
export interface JSDocOptionalType extends JSDocTypeBase {
readonly kind: SyntaxKind.JSDocOptionalType;
readonly type: TypeNode;
}
export interface JSDocTypeTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocTypeTag;
readonly typeExpression: Node;
}
export interface JSDocUnknownTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocUnknownTag;
}
export interface JSDocTemplateTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocTemplateTag;
readonly constraint: Node;
readonly typeParameters: NodeArray<TypeParameterDeclaration>;
}
export interface JSDocReturnTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocReturnTag;
readonly typeExpression?: TypeNode;
}
export interface JSDocPublicTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocPublicTag;
}
export interface JSDocPrivateTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocPrivateTag;
}
export interface JSDocProtectedTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocProtectedTag;
}
export interface JSDocReadonlyTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocReadonlyTag;
}
export interface JSDocOverrideTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocOverrideTag;
}
export interface JSDocDeprecatedTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocDeprecatedTag;
}
export interface JSDocSeeTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocSeeTag;
readonly nameExpression: TypeNode;
}
export interface JSDocImplementsTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocImplementsTag;
readonly className: ExpressionWithTypeArguments;
}
export interface JSDocAugmentsTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocAugmentsTag;
readonly className: ExpressionWithTypeArguments;
}
export interface JSDocSatisfiesTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocSatisfiesTag;
readonly typeExpression: TypeNode;
}
export interface JSDocThrowsTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocThrowsTag;
readonly typeExpression?: TypeNode;
}
export interface JSDocThisTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocThisTag;
readonly typeExpression: TypeNode;
}
export interface JSDocImportTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocImportTag;
readonly importClause?: ImportClause;
readonly moduleSpecifier: Expression;
readonly attributes?: ImportAttributes;
}
export interface JSDocCallbackTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocCallbackTag;
readonly typeExpression: TypeNode;
readonly name?: JSDocFullName;
}
export interface JSDocOverloadTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocOverloadTag;
readonly typeExpression: TypeNode;
}
export interface JSDocTypedefTag extends JSDocTagBase {
readonly kind: SyntaxKind.JSDocTypedefTag;
readonly typeExpression?: Node;
readonly name?: JSDocFullName;
}
export interface JSDocSignature extends JSDocTypeBase, FunctionLikeBase {
readonly kind: SyntaxKind.JSDocSignature;
}
export interface JSDocNameReference extends TypeNodeBase {
readonly kind: SyntaxKind.JSDocNameReference;
readonly name: EntityName;
}
export interface ModuleDeclaration extends DeclarationBase, StatementBase, ModifiersBase, BodyBase {
readonly kind: SyntaxKind.ModuleDeclaration;
readonly keyword: SyntaxKind.ModuleKeyword | SyntaxKind.N