Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript-在类中引用jQuery_Jquery_Visual Studio 2013_Typescript1.4_Nw.js - Fatal编程技术网

TypeScript-在类中引用jQuery

TypeScript-在类中引用jQuery,jquery,visual-studio-2013,typescript1.4,nw.js,Jquery,Visual Studio 2013,Typescript1.4,Nw.js,获取以下错误“未捕获引用错误:$未定义”。我非常理解这个错误,jQuery在我的类中是无法识别的。我不明白的是如何确保它被捡起来 以下是我到目前为止得到的信息: /附件ts /// <reference path="references.ts"/> import Layout = require("./classes/Layout"); class Brooklyn { elementId: string; constructor(elementId: strin

获取以下错误“未捕获引用错误:$未定义”。我非常理解这个错误,jQuery在我的类中是无法识别的。我不明白的是如何确保它被捡起来

以下是我到目前为止得到的信息:

/附件ts

/// <reference path="references.ts"/>
import Layout = require("./classes/Layout");

class Brooklyn {
    elementId: string;

    constructor(elementId: string) {
        this.elementId = elementId;
    }

    setupLayout() {
        console.log("building layout");
        var layout = new Layout(this.elementId);
        layout.build();
    }
}
//
导入布局=要求(“./类/布局”);
布鲁克林班级{
elementId:string;
构造函数(elementId:string){
this.elementId=elementId;
}
setupLayout(){
控制台日志(“建筑布局”);
var布局=新布局(this.elementId);
layout.build();
}
}
/参考文献

/// <reference path="dfiles/jquery.d.ts"/>
/// <reference path="dfiles/jqueryui.d.ts"/>
/// <reference path="dfiles/jquery.ui.layout.d.ts"/>
/// <reference path="dfiles/node.d.ts" /> 

/// <reference path="classes/Layout.ts" /> 
//
/// 
/// 
///  
///  
/类/Layout.ts

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

    class Layout {
        static layoutOuter: JQueryLayout;
        elementId: string;
        westSelector: string;
        eastSelector: string;

        constructor(elementId: string) {
            this.elementId = elementId;
        }

        build() {
            console.log("init layout");
            this.westSelector = "body > .ui-layout-west"; // outer-west pane
            this.eastSelector = "body > .ui-layout-east"; // outer-east pane


            Layout.layoutOuter = $(this.elementId).layout();  // Error from this line
        }
    }

export = Layout;
//
班级布局{
静态布局器:JQueryLayout;
elementId:string;
选择符:字符串;
选择符:字符串;
构造函数(elementId:string){
this.elementId=elementId;
}
构建(){
console.log(“初始布局”);
this.westSelector=“body>.ui布局西”;//外部西窗格
this.eastSelector=“body>.ui布局东”;//外部东窗格
Layout.layoututer=$(this.elementId).Layout();//此行出错
}
}
导出=布局;

我已经将
jquery.d.ts
引用添加到Layout.ts文件中,但这也没有帮助,将jquery作为引用传递到类中也没有帮助。每个单独的类如何访问jQuery?

我的问题是使用外部TypeScript模块。Nw.js使用node
require
加载节点模块,而不是像RequireJS那样使用客户端脚本。将我的TypeScript模块内部化解决了这个问题


还了解到外部TypeScript模块与主应用程序不共享相同的上下文(现在很明显…),这就是为什么jquery没有被识别的原因

由于jQuery将是一个全局变量,也许这个关于在TypeScript中引用globals的答案会有所帮助:或者这个@jfriend00来自这些变量,没有任何效果。我想添加
declarevar$:JQueryStatic
import$=require('jquery')
应该可以工作,但两者都不能工作。我不知道如何处理它,因为它有多个文件,我认为多个文件是问题所在。