TypeScript
所以你已经完成了JavaScript,现在想要挑战解析TypeScript了?坏消息是没有规范,但好消息是TypeScript解析器在一个单一文件中 🙃。
JSX vs TSX
对于以下代码,
let foo = <string> bar;
如 果这是tsx
,那么这是一个语法错误(未终止的JSX),但如果是VariableDeclaration
和TSTypeAssertion
,那么这是正确的。
前向查找 (lookahead)
在某些地方,解析器需要向前查找并查看多个 token 以决定正确的语法。
TSIndexSignature
例如,为了解析TSIndexSignature
,考虑以下两种情况:
type A = { readonly [a: number]: string }
^__________________________^ TSIndexSignature
type B = { [a]: string }
^_________^ TSPropertySignature