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不是互斥的,即使在同一个文件中也是如此.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...