我被困在试图理解用AMD打字的文件中的模块(我使用RequireJS);我已下载的{jQuery.d.ts类型from here在文件末尾包含以下行:
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
我试图了解导入jquery模块的最正确方法。
到目前为止,我正在使用
declare module "jquery" {
export = $;
}
declare var jQuery: JQueryStatic;
declare var $: JQueryStatic;
这似乎正确加载了jquery定义类型(我在$ object上的智能感知),同时它生成了js:
import $ = require('jquery');
这样requireJs可以在需要时正确下载库。
1)我做得对吗?
使用export =导入模块时,必须使用TypeScript特定的import let = require(&#34; module&#34;)导入模块。
存在导入需要声明,以便与早期版本的TypeScript向后兼容。 ImportRequireDeclaration:import BindingIdentifier = require(StringLiteral);
2)语法&#34; import identifier = require(string)是否已弃用?我应该使用
define(["require", "jquery"], function(require, $) { ... }
3)official lang spec也说:
存在导出分配,以便与早期版本的TypeScript向后兼容。导出分配将模块成员指定为要导出的实体来代替模块本身。 ExportAssignment:export = IdentifierReference;
4)&#34; export = $;&#34;不推荐使用jquery.d.ts中的语法吗?
5)如果我想编写自己的&#34;模块&#34;,如何使用非相对方式导入它?我不想使用:
import * as $ from 'jquery';
相反,我想使用:
import * as mymodule from '../myfolder/mymodule';
有办法吗?我该如何申报我的模块? &#34;声明模块&#34;句法? &#34; export =&#34;句法 ?还有别的吗?
6)我是唯一一个认为这些东西(以及官方文档)真的令人困惑的人吗?
谢谢你们,伙计们。
答案 0 :(得分:0)
我是唯一一个对这些东西(以及官方文档)感到困惑的人吗?
没有。我认为文档是错误的。我一直在做 update: function (event, ui) {
var attr_id = ui.item.attr('data-id');
}
。
我也提出了你的担忧:https://github.com/Microsoft/TypeScript/issues/11340