Skip to content

SyntaxKind 完整枚举

SyntaxKind 是一个超大枚举(共约 360 个原始值),唯一标识 AST 中每一种节点/Token 的种类。
通过 node.kind 访问,常与类型守卫 ts.isXxx(node) 配合使用。

TIP

枚举中还有一批范围边界别名FirstXxx / LastXxx)用于范围判断,列于文末。

标识符 & 私有标识符

枚举值数值说明
Identifier80普通标识符(变量名、类型名等)
PrivateIdentifier81私有字段标识符 #field

声明节点

枚举值数值说明
QualifiedName167限定名 A.B
ComputedPropertyName168计算属性名 [expr]
TypeParameter169泛型参数声明 <T extends ...>
Parameter170函数参数
Decorator171装饰器 @Decorator
PropertySignature172接口属性签名 x: T
PropertyDeclaration173类属性声明
MethodSignature174接口方法签名
MethodDeclaration175类方法声明
ClassStaticBlockDeclaration176类静态块 static { ... }
Constructor177构造函数 constructor()
GetAccessor178getter get foo()
SetAccessor179setter set foo(v)
CallSignature180调用签名 (x: T): R
ConstructSignature181构造签名 new (...): T
IndexSignature182索引签名 [key: string]: T
EnumMember307枚举成员
SourceFile308源文件根节点

类型节点

枚举值数值说明
TypePredicate183类型谓词 x is T / asserts x is T
TypeReference184类型引用 Array<T>Promise<T>
FunctionType185函数类型 (x: T) => R
ConstructorType186构造函数类型 new (...) => T
TypeQuery187typeof Expr
TypeLiteral188匿名对象类型 { x: number }
ArrayType189数组类型 T[]
TupleType190元组类型 [A, B, C]
OptionalType191可选元素 T?(元组内)
RestType192剩余元素 ...T(元组内)
UnionType193联合类型 A | B
IntersectionType194交叉类型 A & B
ConditionalType195条件类型 T extends U ? X : Y
InferType196infer R
ParenthesizedType197括号类型 (T)
ThisType198this 类型
TypeOperator199类型运算符 keyof T / unique symbol / readonly
IndexedAccessType200索引访问类型 T[K]
MappedType201映射类型 { [K in keyof T]: ... }
LiteralType202字面量类型节点
NamedTupleMember203具名元组成员 [name: T]
TemplateLiteralType204模板字面量类型 `${T}`
TemplateLiteralTypeSpan205模板字面量类型片段
ImportType206import() 类型

表达式节点

枚举值数值说明
ArrayLiteralExpression210数组字面量 [1, 2, 3]
ObjectLiteralExpression211对象字面量 { a: 1 }
PropertyAccessExpression212属性访问 obj.prop
ElementAccessExpression213元素访问 obj[key]
CallExpression214函数调用 fn(args)
NewExpression215new Ctor(args)
TaggedTemplateExpression216标签模板 tag`...`
TypeAssertionExpression217旧式断言 <T>expr
ParenthesizedExpression218括号表达式 (expr)
FunctionExpression219函数表达式 function() {}
ArrowFunction220箭头函数 () => {}
DeleteExpression221delete obj.prop
TypeOfExpression222typeof expr
VoidExpression223void expr
AwaitExpression224await expr
PrefixUnaryExpression225前缀一元 !x-x++x
PostfixUnaryExpression226后缀一元 x++x--
BinaryExpression227二元表达式 a + ba = b
ConditionalExpression228三元表达式 cond ? a : b
TemplateExpression229模板字符串 `${x}`
YieldExpression230yield expr
SpreadElement231...expr(实参展开)
ClassExpression232类表达式 class {}
OmittedExpression233省略元素(解构中的空位)
ExpressionWithTypeArguments234带类型实参的表达式(extends Foo<T>
AsExpression235expr as T
NonNullExpression236非空断言 expr!
MetaProperty237元属性 new.targetimport.meta
SyntheticExpression238编译器合成表达式(内部)
SatisfiesExpression239expr satisfies T(TS 4.9+)

语句节点

枚举值数值说明
Block242块语句 { ... }
EmptyStatement243空语句 ;
VariableStatement244变量声明语句 let/const/var x = ...
ExpressionStatement245表达式语句
IfStatement246if (...) {}
DoStatement247do {} while (...)
WhileStatement248while (...) {}
ForStatement249for (;;) {}
ForInStatement250for (x in obj) {}
ForOfStatement251for (x of iter) {}
ContinueStatement252continue
BreakStatement253break
ReturnStatement254return expr
WithStatement255with (obj) {}
SwitchStatement256switch (x) {}
LabeledStatement257标签语句 label: stmt
ThrowStatement258throw expr
TryStatement259try {} catch {} finally {}
DebuggerStatement260debugger

声明语句

枚举值数值说明
VariableDeclaration261单个变量声明 x: T = val
VariableDeclarationList262变量声明列表 let x, y
FunctionDeclaration263函数声明 function foo() {}
ClassDeclaration264类声明 class Foo {}
InterfaceDeclaration265interface 声明
TypeAliasDeclaration266type 别名声明
EnumDeclaration267enum 声明
ModuleDeclaration268module / namespace 声明
ModuleBlock269模块/命名空间体 { ... }
NamespaceExportDeclaration271export as namespace Foo
MissingDeclaration283缺失的声明(错误恢复用)

模块 / 导入导出

枚举值数值说明
ImportEqualsDeclaration272import Foo = require('...')
ImportDeclaration273import ... from '...'
ImportClause274import Foo, { bar } 的从句部分
NamespaceImport275* as ns
NamedImports276{ Foo, Bar }
ImportSpecifier277单个导入说明符 Foo as F
ExportAssignment278export default expr / export = expr
ExportDeclaration279export { ... } from '...'
NamedExports280{ Foo, Bar } 的导出形式
NamespaceExport281export * as ns
ExportSpecifier282单个导出说明符
ExternalModuleReference284require('...')
ImportAttributes301导入属性 with { type: 'json' }
ImportAttribute302单个导入属性

绑定模式

枚举值数值说明
ObjectBindingPattern207对象解构模式 { a, b }
ArrayBindingPattern208数组解构模式 [a, b]
BindingElement209解构绑定元素

对象字面量成员

枚举值数值说明
PropertyAssignment304属性赋值 key: value
ShorthandPropertyAssignment305简写属性 { x }
SpreadAssignment306展开赋值 { ...obj }

控制流辅助节点

枚举值数值说明
CaseBlock270switch 的 case 块
CaseClause297case x:
DefaultClause298default:
HeritageClause299extends / implements 从句
CatchClause300catch (e) {}
TemplateSpan240模板字符串的插值片段
SemicolonClassElement241类体内的分号 ;

JSX 节点

枚举值数值说明
JsxElement285JSX 元素 <Foo>...</Foo>
JsxSelfClosingElement286自闭合 JSX <Foo />
JsxOpeningElement287JSX 开标签 <Foo>
JsxClosingElement288JSX 闭标签 </Foo>
JsxFragment289JSX 片段 <>...</>
JsxOpeningFragment290<>
JsxClosingFragment291</>
JsxAttribute292JSX 属性 prop={val}
JsxAttributes293JSX 属性集合
JsxSpreadAttribute294JSX 展开属性 {...props}
JsxExpression295JSX 插值表达式 {expr}
JsxNamespacedName296JSX 命名空间名 ns:tag
JsxText12JSX 文本内容
JsxTextAllWhiteSpaces13JSX 纯空白文本

字面量 Token

枚举值数值说明
NumericLiteral9数字字面量 42
BigIntLiteral10BigInt 字面量 42n
StringLiteral11字符串字面量 "foo"
RegularExpressionLiteral14正则字面量 /pattern/flags
NoSubstitutionTemplateLiteral15无插值模板 `text`
TemplateHead16模板头 `text${
TemplateMiddle17模板中间 }text${
TemplateTail18模板尾 }text`

关键字 Token

JS 保留关键字(83–118)

枚举值数值关键字
BreakKeyword83break
CaseKeyword84case
CatchKeyword85catch
ClassKeyword86class
ConstKeyword87const
ContinueKeyword88continue
DebuggerKeyword89debugger
DefaultKeyword90default
DeleteKeyword91delete
DoKeyword92do
ElseKeyword93else
EnumKeyword94enum
ExportKeyword95export
ExtendsKeyword96extends
FalseKeyword97false
FinallyKeyword98finally
ForKeyword99for
FunctionKeyword100function
IfKeyword101if
ImportKeyword102import
InKeyword103in
InstanceOfKeyword104instanceof
NewKeyword105new
NullKeyword106null
ReturnKeyword107return
SuperKeyword108super
SwitchKeyword109switch
ThisKeyword110this
ThrowKeyword111throw
TrueKeyword112true
TryKeyword113try
TypeOfKeyword114typeof
VarKeyword115var
VoidKeyword116void
WhileKeyword117while
WithKeyword118with

JS 未来保留关键字(119–127)

枚举值数值关键字
ImplementsKeyword119implements
InterfaceKeyword120interface
LetKeyword121let
PackageKeyword122package
PrivateKeyword123private
ProtectedKeyword124protected
PublicKeyword125public
StaticKeyword126static
YieldKeyword127yield

TypeScript 专有关键字(128–166)

枚举值数值关键字 / 说明
AbstractKeyword128abstract
AccessorKeyword129accessor(TS 4.9+)
AsKeyword130as
AssertsKeyword131asserts
AssertKeyword132assert
AnyKeyword133any 类型
AsyncKeyword134async
AwaitKeyword135await
BooleanKeyword136boolean 类型
ConstructorKeyword137constructor
DeclareKeyword138declare
GetKeyword139get
InferKeyword140infer
IntrinsicKeyword141intrinsic(内建类型)
IsKeyword142is(类型谓词)
KeyOfKeyword143keyof
ModuleKeyword144module
NamespaceKeyword145namespace
NeverKeyword146never 类型
OutKeyword147out(协变标注,TS 4.7+)
ReadonlyKeyword148readonly
RequireKeyword149require
NumberKeyword150number 类型
ObjectKeyword151object 类型
SatisfiesKeyword152satisfies(TS 4.9+)
SetKeyword153set
StringKeyword154string 类型
SymbolKeyword155symbol 类型
TypeKeyword156type
UndefinedKeyword157undefined 类型
UniqueKeyword158unique
UnknownKeyword159unknown 类型
UsingKeyword160using(TS 5.2+)
FromKeyword161from
GlobalKeyword162global
BigIntKeyword163bigint 类型
OverrideKeyword164override(TS 4.3+)
OfKeyword165offor...of
DeferKeyword166defer

标点 / 操作符 Token

分隔符

枚举值数值符号
OpenBraceToken19{
CloseBraceToken20}
OpenParenToken21(
CloseParenToken22)
OpenBracketToken23[
CloseBracketToken24]
DotToken25.
DotDotDotToken26...
SemicolonToken27;
CommaToken28,
QuestionDotToken29?.
ColonToken59:
AtToken60@
BacktickToken62`(JSDoc 扫描器专用)
HashToken63#(JSDoc 扫描器专用)
QuestionToken58?

比较运算符

枚举值数值符号
LessThanToken30<
LessThanSlashToken31</(JSX 用)
GreaterThanToken32>
LessThanEqualsToken33<=
GreaterThanEqualsToken34>=
EqualsEqualsToken35==
ExclamationEqualsToken36!=
EqualsEqualsEqualsToken37===
ExclamationEqualsEqualsToken38!==

算术 / 逻辑运算符

枚举值数值符号
EqualsGreaterThanToken39=>
PlusToken40+
MinusToken41-
AsteriskToken42*
AsteriskAsteriskToken43**
SlashToken44/
PercentToken45%
PlusPlusToken46++
MinusMinusToken47--
LessThanLessThanToken48<<
GreaterThanGreaterThanToken49>>
GreaterThanGreaterThanGreaterThanToken50>>>
AmpersandToken51&
BarToken52|
CaretToken53^
ExclamationToken54!
TildeToken55~
AmpersandAmpersandToken56&&
BarBarToken57||
QuestionQuestionToken61??

赋值运算符

枚举值数值符号
EqualsToken64=
PlusEqualsToken65+=
MinusEqualsToken66-=
AsteriskEqualsToken67*=
AsteriskAsteriskEqualsToken68**=
SlashEqualsToken69/=
PercentEqualsToken70%=
LessThanLessThanEqualsToken71<<=
GreaterThanGreaterThanEqualsToken72>>=
GreaterThanGreaterThanGreaterThanEqualsToken73>>>=
AmpersandEqualsToken74&=
BarEqualsToken75|=
BarBarEqualsToken76||=
AmpersandAmpersandEqualsToken77&&=
QuestionQuestionEqualsToken78??=
CaretEqualsToken79^=

Trivia(空白 / 注释)

枚举值数值说明
SingleLineCommentTrivia2单行注释 // ...
MultiLineCommentTrivia3多行注释 /* ... */
NewLineTrivia4换行符
WhitespaceTrivia5空白字符
ShebangTrivia6Shebang #!...
ConflictMarkerTrivia7冲突标记 <<<<<<
NonTextFileMarkerTrivia8非文本文件标记

JSDoc 节点

枚举值数值说明
JSDocTypeExpression310JSDoc 类型表达式 {T}
JSDocNameReference311JSDoc 名称引用
JSDocMemberName312JSDoc 成员名
JSDocAllType313{*} 任意类型
JSDocUnknownType314{?} 未知类型
JSDocNullableType315{?T} 可空类型
JSDocNonNullableType316{!T} 非空类型
JSDocOptionalType317{T=} 可选类型
JSDocFunctionType318JSDoc 函数类型
JSDocVariadicType319JSDoc 可变参数类型
JSDocNamepathType320JSDoc 名称路径类型
JSDoc321JSDoc 注释块(JSDocComment 已弃用,同值)
JSDocText322JSDoc 纯文本内容
JSDocTypeLiteral323JSDoc 类型字面量
JSDocSignature324JSDoc 签名
JSDocLink325{@link ...}
JSDocLinkCode326{@linkcode ...}
JSDocLinkPlain327{@linkplain ...}

JSDoc 标签

枚举值数值说明
JSDocTag328通用 JSDoc 标签
JSDocAugmentsTag329@augments / @extends
JSDocImplementsTag330@implements
JSDocAuthorTag331@author
JSDocDeprecatedTag332@deprecated
JSDocClassTag333@class / @constructor
JSDocPublicTag334@public
JSDocPrivateTag335@private
JSDocProtectedTag336@protected
JSDocReadonlyTag337@readonly
JSDocOverrideTag338@override
JSDocCallbackTag339@callback
JSDocOverloadTag340@overload
JSDocEnumTag341@enum
JSDocParameterTag342@param
JSDocReturnTag343@returns / @return
JSDocThisTag344@this
JSDocTypeTag345@type
JSDocTemplateTag346@template
JSDocTypedefTag347@typedef
JSDocSeeTag348@see
JSDocPropertyTag349@property / @prop
JSDocThrowsTag350@throws
JSDocSatisfiesTag351@satisfies
JSDocImportTag352@import

特殊 / 合成节点

枚举值数值说明
Unknown0未知/无效节点
EndOfFileToken1文件结束
Bundle309多文件 Bundle(内部)
SyntaxList353语法列表(内部)
NotEmittedStatement354不输出语句(变换器用)
NotEmittedTypeElement355不输出类型元素
PartiallyEmittedExpression356部分输出表达式(变换器用)
CommaListExpression357逗号列表表达式(内部)
SyntheticReferenceExpression358合成引用表达式(内部)

范围边界别名

这些别名不对应具体节点,仅用于范围判断(如 kind >= SyntaxKind.FirstStatement && kind <= SyntaxKind.LastStatement):

别名数值说明
FirstToken0第一个 Token
LastToken166最后一个 Token
FirstTriviaToken2第一个 Trivia
LastTriviaToken7最后一个 Trivia
FirstLiteralToken9第一个字面量 Token
LastLiteralToken15最后一个字面量 Token
FirstTemplateToken15第一个模板 Token
LastTemplateToken18最后一个模板 Token
FirstPunctuation19第一个标点
LastPunctuation79最后一个标点
FirstAssignment64第一个赋值运算符
LastAssignment79最后一个赋值运算符
FirstCompoundAssignment65第一个复合赋值运算符
LastCompoundAssignment79最后一个复合赋值运算符
FirstBinaryOperator30第一个二元运算符
LastBinaryOperator79最后一个二元运算符
FirstReservedWord83第一个保留字
LastReservedWord118最后一个保留字
FirstKeyword83第一个关键字
LastKeyword166最后一个关键字
FirstFutureReservedWord119第一个未来保留字
LastFutureReservedWord127最后一个未来保留字
FirstTypeNode183第一个类型节点
LastTypeNode206最后一个类型节点
FirstStatement244第一个语句节点
LastStatement260最后一个语句节点
FirstNode167第一个非 Token 节点
FirstJSDocNode310第一个 JSDoc 节点
LastJSDocNode352最后一个 JSDoc 节点
FirstJSDocTagNode328第一个 JSDoc 标签节点
LastJSDocTagNode352最后一个 JSDoc 标签节点
Count359枚举总数