Typescript:定义文件和全局文件

Typescript:定义文件和全局文件,typescript,Typescript,几乎所有的定义文件都很容易获得,您知道在哪里,可以执行declare模块或declare var。这不是一个大问题吗?如果我忘记导入一个已声明模块的实现,然后使用它,编译器将永远不会给我一个错误,但应用程序将在运行时严重崩溃 我知道如何解决这个问题的一种方法是只使用声明模块“topLevelName”编写定义文件,这样您就不会在不需要它的情况下意外地使用它。但这给jQuery之类的东西带来了一个问题,因为人们往往不需要它,而只是把它放在全局上下文中。在这种情况下,当前的方法实际上工作正常 我似乎

几乎所有的定义文件都很容易获得,您知道在哪里,可以执行
declare模块
declare var
。这不是一个大问题吗?如果我忘记导入一个已声明模块的实现,然后使用它,编译器将永远不会给我一个错误,但应用程序将在运行时严重崩溃

我知道如何解决这个问题的一种方法是只使用
声明模块“topLevelName”
编写定义文件,这样您就不会在不需要它的情况下意外地使用它。但这给jQuery之类的东西带来了一个问题,因为人们往往不需要它,而只是把它放在全局上下文中。在这种情况下,当前的方法实际上工作正常

我似乎无法理解这个系统的巨大局限性。我错过什么了吗

如果我忘记导入一个已声明模块的实现,然后使用它,编译器将永远不会给我一个错误,但应用程序将在运行时严重崩溃

这不是个大问题吗

不是真的。对于初学者来说,添加类型但忘记包含JavaScript的可能性不是很高

我错过什么了吗

没有

更多
一个更大的问题是lib之间的类型兼容性,例如,根据JQuery的不同版本,不同的TypeScript库

TypeScript也不会验证所有编译的输出文件是否都包含在页面中,因为可能存在
a.ts
b.ts
,但页面只包含
。当您使用CommonJS或AMD构建应用程序时,忘记
需要
文件的可能性非常高,因为您必须在使用特定库的每个文件中执行此操作。忘记包含脚本标记的可能性当然很小,但这只是在您对globals(和/或不使用NodeJS)感到满意的情况下发生的。我会接受你的回答,因为大多数Typescript开发人员似乎都认同你的观点。