Javascript 什么';TypeScript包含@types而不包含JS库的原理是什么?
通过参考Javascript 什么';TypeScript包含@types而不包含JS库的原理是什么?,javascript,typescript,Javascript,Typescript,通过参考@types/foo,我们可以在TypeScript代码中使用JavaScript库的功能。但是为什么呢?它只定义了一组数据类型和接口,但实际的逻辑仍在JS代码中。在不包含原始JS库的情况下,代码如何运行 例如,为了在TypeScript中实现地图服务,我们只包括@types/googlemaps,而不包括JS库googlemaps。为什么会这样?没有实际的库,代码无法运行。通常,您将对@types具有开发依赖性,并对实际库具有完全依赖性 这些类型用于为库回填类型信息,以便为您提供自动补
@types/foo
,我们可以在TypeScript代码中使用JavaScript库的功能。但是为什么呢?它只定义了一组数据类型和接口,但实际的逻辑仍在JS代码中。在不包含原始JS库的情况下,代码如何运行
例如,为了在TypeScript中实现地图服务,我们只包括
@types/googlemaps
,而不包括JS库googlemaps
。为什么会这样?没有实际的库,代码无法运行。通常,您将对@types
具有开发依赖性,并对实际库具有完全依赖性
这些类型用于为库回填类型信息,以便为您提供自动补全、提示和类型检查,但在运行时它们实际上不会为您提供任何信息
有些情况下,包将提供自己的类型,因此您不需要
@types
开发依赖项,但几乎没有相反的情况(唯一的例外是,lib.d.ts
没有包含浏览器等支持的功能,并且您临时使用了@types
定义来让编译器知道它).一般来说,不,这不是它的工作方式。添加@types/googlemaps
只包括该库的类型定义,这样您就可以开发,它不会取代该库。该库仍然必须在运行时出现。它会是什么样子?您能给出一个不包括googlemaps库的工作吗?哎呀,我很快意识到我的google示例谷歌地图是错误的,因为我实际上在我的html中嵌入了它的api标记。在这种情况下,没有必要包含额外的googlemaps
npm包。感谢您的评论!非常感谢!我很快意识到我的谷歌地图示例是错误的,因为我实际上在我的html中嵌入了它的api标记。在这种情况下,没有need包括一个额外的googlemaps
npm包。