我正在使用Node.js的履帶我使用jQuery解析使用 jsdom
製作的網頁。進口的jQuery
我發現了一個jquery.d.ts通過tsd
,從而結束這樣的:
declare module "jquery" {
export = $;
}
declare var jQuery: JQueryStatic;
declare var $: JQueryStatic;
這個定義似乎只可用在哪裏jQuery是加載 全局或其中一個全局變量窗口可以客戶端...
如所解釋的here, 進口當在window.document
是一個環境(使用require
)不 可用(如Node.js的),jQuery的導出工廠itsel的其中有F進行 initalized一個窗口對象:
// JavaScript (ES5)
var jquery = require("jquery");
// ...
var $ = jquery(window);
但隨着打字稿,自定義不包含這個工廠。它 不起作用:
// TypeScript
import jquery from "jquery"; // Module '"jquery"' has no default export
import {jquery} from "jquery" // Module '"jquery"' has no exported member 'jquery'
import {jQuery} from "jquery" // Module '"jquery"' has no exported member 'jQuery'
import {$} from "jquery" // Module '"jquery"' has no exported member '$'
import * as jquery from "jquery"; // Doesn't complain here, but `jquery` variable is not usable
我試着寫這個工廠的定義,但它似乎我因子評分不一樣簡單 :
interface JQueryFactory {
(window: any): JQueryStatic;
}
declare module "jquery" {
export default JQueryFactory;
}
declare var jQuery: JQueryStatic;
declare var $: JQueryStatic;
並使用它:
// TypeScript
/// <reference path="../../typings/tsd.d.ts"/>
import jquery from "jquery";
// ...
var $ = jquery(window); // error TS2304: Cannot find name 'jquery'
但現在我有這個奇怪的錯誤?!
感謝您發佈自己的答案@Ascarius,請提供有關如何修復它的更多詳細信息?我面臨着同樣的問題。謝謝! – asheinfeld
@asheinfeld我添加了一個基本的例子。 –
太好了,謝謝@Ascarius!也許你應該爲jquery.d.ts做一個PR,這樣每個人都喜歡這個,乾杯! – asheinfeld