名字'$'在当前作用域中不存在——typescript和jquery在一个模块中

The name '$' does not exist in the current scope - typescript and jquery inside a module

本文关键字:一个 模块 jquery 不存在 作用域 typescript 名字      更新时间:2023-09-26

尝试在类或模块内使用jquery时出现错误:

/// <reference path="../jquery.d.ts" />
element: jQuery; // all is good
elementou: $;    // all is fine

class buggers{
    private element: jQuery;   // The name jQuery does not exist in the current scope
    private elementou: $;      // The name $ does not exist in the current scope
}
module something {
    class buggers{
        private element: jQuery;   // The name jQuery does not exist in the current scope
        private elementou: $;      // The name $ does not exist in the current scope
    }
}

我不知道如何解决这个问题

您使用$jQuery就好像它们是类型一样。从DefinitelyTyped中获取d.ts,您正在寻找的类型是JQueryJQueryStatic

$jQuery应该已经在d.ts文件中被声明为变量:

declare var jQuery: JQueryStatic;
declare var $: JQueryStatic;

…但是,如果您觉得需要在类中再次声明它们,您可能需要尝试:

class buggers{
    private element: JQuery;   // JQuery object. You'll need to assign something to this before you can use it. e.g element = $('selector');
    private elementou: JQueryStatic;      // Reference to the $ JQuery Static object
}

我看到您这样做了,但是我忽略了这个重要的步骤。请记住在TS文件的顶部包含定义引用。

/// <reference path="../../assets/js/libs/typedefs/jquery-1.8.d.ts" />