如何从命令行检查TypeScript代码的语法错误?

38
我有一段生成TypeScript类的代码,并且在构建/测试步骤中,我想检查生成的文件语法的正确性。
我查看了TypeScript编译器选项,但没有找到这样的选项。
如何检查语法?
我不想进行完整的编译,因为在该构建步骤中无法访问所引用的类型(它们位于一个不同的模块中,稍后将生成的源代码添加到该模块中)。
4个回答

44

你正在寻找的是tsc --noEmit

不要生成编译器输出文件,如JavaScript源代码、源映射或声明。

来源:TSDocs


如果您想在CI上使用lint代码并检查类型,请使用tsc --noEmit && eslint来源:Stackoverflow评论

4
很烦人,--noEmit 不是默认选项。 - Andrei Savin
1
tsc默认编译项目。 - TheEhsanSarshar
3
你可以使用 "tsc --noEmit --skipLibCheck" 来忽略对 node_modules 的检查。 - Mahmoud

2

如果您只需要进行语法检查,则可以使用类似于tslint的代码检查工具,该工具可以通过命令行或许多构建工具运行。


7
根据他们的 github 页面,看起来 TSLint 将在 2019 年被弃用。显然,ESLint 和 @typescript-eslint/eslint-plugin 应该能够胜任。 - Andrew
现在它已经被弃用了 https://code.visualstudio.com/api/advanced-topics/tslint-eslint-migration - Max

2

首先安装ESLint(您需要在系统中安装npm):

npm i -g eslint

执行 ESLint 来检查文件:

eslint file1.ts file2.ts

或者:

eslint lib/**

ESLint支持许多选项,以满足更高级的用例,请查看文档


0

更新!在某些情况下,使用编译器选项来包含和检查JavaScript可能会让您达到所需的目标(或者至少足够接近,以便您可以修复JavaScript代码)......当这不能满足您的要求时,下面的答案将有所帮助。

没有选项可以在无法验证类型信息的情况下检查您的文件 - 尽管您可以提供一个非常宽松类型的定义文件,以使那些模块被有效地忽略,例如:

declare var myModule: any;

这将抑制对myModule的任何类型检查,并允许您使用标准的tsc命令来检查您的文件。


我认为这是关于编译错误的问题。我只需要进行语法检查 - 即结构、关键字、括号等方面。只需要AST。这可以在没有类型信息的情况下完成。 - Ondra Žižka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接