javascript – 环境声明样式和模块

前端之家收集整理的这篇文章主要介绍了javascript – 环境声明样式和模块前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

有人正在使用Backbone.d.ts编写Backbone应用程序.我想讨论两个用例.

>使用AMD加载器创建骨干应用程序(或者我也考虑使用CommonJS)
>使用普通JS创建骨干应用程序

对于阵营1中的人员,必须将骨干模块定义为外部模块,以便能够导入模块并将其包含在define()包装器中.

对于阵营2中的人,必须将骨干模块定义为内部模块,以便使用智能感知而不需要使用import语句/ define()包装器.

问题:是否有其他方法来定义模块,以便在两种情况下都可以使用它?

我真的不想创建一个叉子,这样你就可以拥有它

// required for those using import (1)
declare module "Backbone" { 

要么

// required for those not using import (2) and backbone already exists in the global scope
declare module Backbone {

并且仍然能够与您的代码/ intellisense相处.

最佳答案
这不能仅使用一个.d.ts文件来完成,因为编译器需要知道您用于主干的模块系统类型,以便知道要生成什么类型​​的代码.您可以在单个文件中混合和匹配内部和外部模块,并且无法正确猜出您用于主干的哪个.

您可能可以使用接口声明来实现它,以便您可以在一个地方声明大多数内容并且具有引用该内容的“backbone-internal.d.ts”和“backbone-external.d.ts”文件通用声明文件,但您可以在多大程度上依赖于API的表面区域.

TL; DR:Camp 1和Camp 2不是互斥的,即使在同一个文件中也是如此.

猜你在找的JavaScript相关文章