TypeScript包含没有JS库的@types的原理是什么?

时间:2017-12-18 09:16:59

标签: javascript typescript

通过引用@types/foo,我们可以在TypeScript代码中使用JavaScript库的功能。但为什么?它只是定义了一堆数据类型和接口,但实际的逻辑仍然在JS代码中。如何在不包含原始JS库的情况下运行代码?

例如,要在TypeScript中实现地图服务,我们只包含@types/googlemaps而不包含JS库googlemaps。为什么会这样?

1 个答案:

答案 0 :(得分:3)

如果没有实际的库,代码将无法运行。通常,您将对@types具有开发依赖性,并且对实际库具有完全依赖性。

这些类型用于库的反向填充类型信息,以便为您提供自动完成,提示和类型检查 - 但它们实际上并没有在运行时为您提供任何信息。

在某些情况下,程序包将提供自己的类型,因此您不会需要@types开发依赖项,但几乎没有情况反转为真(唯一的例外是lib.d.ts没有包含浏览器等支持的功能,您暂时使用@types定义让编译器了解它。)