我的TypeScript编译器编译了什么?

时间:2016-09-23 18:19:12

标签: typescript

我有以下tsconfig.json文件

{
   "compilerOptions": {
       "noImplicitAny": true,
       "target": "es5"
   }
}

单个TypeScript文件src / app / pages / details / testts.ts:

let x = 5;

当我从tsconfig.json所在的文件夹运行tsc时,我得到了这个诊断信息:

D:\Workspaces\MyProject\client>tsc  src/app/pages/details/testts.ts --diagnostics
Files:               2
Lines:           19005
Nodes:           95663
Identifiers:     35490
Symbols:         94717
Types:           12063
Memory used:    92569K
I/O read:        0.00s
I/O write:       0.00s
Parse time:      0.35s
Bind time:       0.17s
Check time:      1.58s
Emit time:       0.03s
Total time:      2.12s

它说我已经编译了两个文件,共有19005行,共2.12秒! 我相信我有一个文件和一行。出了什么问题?

1 个答案:

答案 0 :(得分:2)

第二个文件是node_modules/typescript/lib/lib.d.ts。它包含javascript运行时环境中可能存在的所有内容的类型声明。

尝试运行

tsc src/app/pages/details/testts.ts --diagnostics --noLib

或者只是暂时删除该文件,然后您将按预期获得有关一个​​文件的报告:

error TS2318: Cannot find global type 'Array'.
error TS2318: Cannot find global type 'Boolean'.
error TS2318: Cannot find global type 'Function'.
error TS2318: Cannot find global type 'IArguments'.
error TS2318: Cannot find global type 'Number'.
error TS2318: Cannot find global type 'Object'.
error TS2318: Cannot find global type 'RegExp'.
error TS2318: Cannot find global type 'String'.
Files:               1
Lines:               1
Nodes:               7
Identifiers:         1
Symbols:             5
Types:              20
Memory used:    12438K
I/O read:        0.00s
I/O write:       0.00s
Parse time:      0.01s
Bind time:       0.00s
Check time:      0.00s
Emit time:       0.02s
Total time:      0.04s

看起来很奇怪的是,如果没有Array和其他人在单独文件中的声明,那么打字稿就无法检验琐碎的例子,但这就是它的原样。

此外,还有--lib编译器选项,用于选择包含的库文件。例如,如果要将可用的全局符号限制为仅限es5,则可以使用

tsc src/app/pages/details/testts.ts --lib es5

将使用node_modules\typescript\lib\lib.es5.d.ts