使用AMD模块时,避免在Typescript中重复引用/导入外部javascript库

戴纳隆

可以说我正在使用--module AMDTypescript获得AMD模块支持并使用requirejs现在,使用jquery.ts.d来自DefinetelyTyped的示例,我提出了以下最小示例:

/// <reference path="../../typings/jquery/jquery.d.ts" />
import $ = require("jquery");

export class Greeter
{
    sayHello() {
       $('#mydiv').text('hello world');
    }
}

可以清楚地看到,我必须jQuery两次引用:一次通过该///<reference ... />语句,一次通过该import jquery = require("jquery")语句。

现在,如果我省略该///<reference ... />部分,则打字稿编译器tsc将抱怨未知$变量。另一方面,如果我省略了该import语句,则编译将起作用,但在运行时jQuery将不包括在内(因为它不在已编译源代码中的必需组件列表中)。

因此,我看到的唯一方法是始终同时包含这两个语句,这对我来说很不对劲,因为我在重复自己。我是“期望的方式”(TM),还是我在这里缺少什么?

巴萨拉特

我建议添加一个vendor.d.ts合并所有外部定义文件,例如:

/// <reference path="./jquery/jquery.d.ts" />
/// <reference path="./other/other.d.ts" />

然后,您仅参考vendor.d.ts

/// <reference path="../../typings/vendor.d.ts" />
import $ = require("jquery");

顺便说一句,如果您使用的是tsd https://github.com/DefinitelyTyped/tsd,它将tsd.d.ts为您创建一个文件,vendor.d.ts

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

回复:如何将javascript AMD模块导入外部TypeScript模块?(使用module.exports = ...时)

使用Typescript AMD导出导入的模块

导入自定义NPM库时无法在模块外部使用import语句

使用TypeScript和AMD模块时,“严格使用”在哪里?

使用模块时如何避免导入默认符号?

在多个文件中使用模块时,无法编译项目:“导入只能引用通过--extern传递的外部板条箱名称”

在Vue组件中导入和使用外部Typescript模块

使用requirejs.config提供的别名导入TypeScript外部模块

使用lit-html使用Typescript编写测试时,出现“ SyntaxError:无法在模块外部使用导入语句”

使用Jest模拟导入模块中的外部用户模块

使用PHP和MySQL从数据库中获取数据时,无法避免重复数据

使用asp.net在数据库中插入数据时如何避免重复值?

避免使用Javascript在Firebase中重复

避免在Java中重复导入:继承导入?

导入“ uuid”时无法在模块外部使用import语句

使用Javascript中的Typescript模块

使用webpack导入requirejs amd模块

与使用名称空间的外部库链接时,如何解决C中的未定义引用?

Visual Studio ReSharper-在外部模块中声明的Typescript自动导入类-使用from代替require

使用外部模块时如何正确使用TypeScript接口?

Typescript的导入无法解析外部模块

TypeScript:从node_modules导入外部模块

如何从Typescript上的外部模块导入类

在模块内部使用外部引用

如何使用玩笑测试模块,该模块会导入作为构造函数的外部库

如何导入外部JavaScript库

JavaScript和Typescript中模块导入之间的区别?

如何在javascript中导入在html中引用的这个库?

在TypeScript中动态导入模块