通过引用@types/foo
,我们可以在TypeScript代码中使用JavaScript库的功能。但为什么?它只是定义了一堆数据类型和接口(interface),但实际的逻辑仍然在JS代码中。如果不包含原来的JS库,代码如何运行?
例如,要在 TypeScript 中实现 map 服务,我们只需包含 @types/googlemaps
,而不包含 JS 库 googlemaps
。为什么会这样?
最佳答案
如果没有实际的库,代码就无法运行。一般来说,您将具有对 @types
的开发依赖以及对实际库的完全依赖。
这些类型用于回填库的类型信息,以便为您提供自动完成、提示和类型检查 - 但它们实际上不会在运行时为您提供任何内容。
在某些情况下,包会提供自己的类型,因此您不需要 @types
开发依赖项,但几乎没有相反的情况(唯一的异常(exception))如果 lib.d.ts
不包含浏览器等支持的功能,并且您暂时使用 @types
定义来让编译器知道它)。
关于javascript - TypeScript包含@types而不包含JS库的原理是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47865230/