2016-10-03 96 views
1

我被困在嘗試理解typewrit lang與AMD(我使用RequireJS)模塊的東西;在jQuery.d.ts分型我已經下載from here包含以下行的文件的末尾:Typescript加載模塊頭痛

declare module "jquery" { 
    export = $; 
} 
declare var jQuery: JQueryStatic; 
declare var $: JQueryStatic; 

我想了解什麼是導入了jQuery模塊的最正確的方法。

到目前爲止我使用

import $ = require('jquery'); 

這似乎正確加載了jQuery定義類型(我的智能感知已經$對象),並在同一時間它產生的JS:

define(["require", "jquery"], function(require, $) { ... } 

這樣requireJs可以在需要時正確下載庫。

1)我做對了嗎?

official docs

當使用出口=,具體的打字稿進口讓=需要導入模塊(「模塊」),必須使用導入模塊。

official lang spec說:

導入需要與早期版本的打字稿的向後兼容性存在的聲明。 ImportRequireDeclaration:import BindingIdentifier = require(StringLiteral);

2)原來是語法「進口標識符=需要(字符串)不推薦我應該改用

import * as $ from 'jquery'; 

3)official lang spec還表示:對於存在

出口任務與早期版本的TypeScript向後兼容。導出分配將模塊成員指定爲要導出的實體來代替模塊本身。 ExportAssignment:export = IdentifierReference ;

4)那麼jquery.d.ts中的「export = $;」語法是否被棄用?

5)如果我想我自己寫的「模塊」,我怎麼能導入使用它非親屬的方式?我不喜歡用:

import * as mymodule from '../myfolder/mymodule'; 

相反,我想使用:

有沒有辦法做到這一點?我應該如何申報我的模塊? 「聲明模塊」的語法? 「export =」語法?還有別的嗎?

6)我是唯一一個將這些東西(和官方文檔)真正混淆的東西嗎?

謝謝,夥計們。

回答

0

我是唯一一個這種東西(和官方文檔)真的令人困惑的東西嗎?

不,我會認爲文檔是錯誤的。我一直在做import * as $ from "jquery";

更多

我也提出您的問題:https://github.com/Microsoft/TypeScript/issues/11340

+0

謝謝basarat!順便說一句,我已經讀過你的書TypeScript深潛,這是一個偉大的工作! – user2010955