我通过显式设置属性来为我的对象设置全局命名空间window.
window.MyNamespace = window.MyNamespace || {};
Run Code Online (Sandbox Code Playgroud)
TypeScript强调MyNamespace并抱怨:
属性'MyNamespace'在'window'类型的值上不存在任何"
我可以通过声明MyNamespace为环境变量并删除window显式来使代码工作,但我不想这样做.
declare var MyNamespace: any;
MyNamespace = MyNamespace || {};
Run Code Online (Sandbox Code Playgroud)
我怎样才能window留在那里让TypeScript开心?
作为旁注,我发现TypeScript抱怨特别有趣,因为它告诉我这种window类型any绝对可以包含任何东西.
我只在我的应用程序中使用一行jQuery:
$("div.printArea").printArea();
Run Code Online (Sandbox Code Playgroud)
但这给了我一个Typescript错误:
JQuery类型中不存在属性'printArea'?
有人能告诉我如何阻止出现这个错误吗?
我正在重写TypeScript上的一些JS代码,遇到模块导入问题.例如,我想写我的toggleVisiblity功能.这是代码:
/// <reference path="../../typings/jquery/jquery.d.ts" />
import * as $ from "jquery";
interface JQuery {
toggleVisibility(): JQuery;
}
$.fn.extend({
toggleVisibility: function () {
return this.each(function () {
const $this = $(this);
const visibility = $this.css('visibility') === 'hidden' ? 'visible' : 'hidden';
$this.css('visibility', visibility);
});
}
});
const jQuery = $('foo');
const value = jQuery.val();
jQuery.toggleVisibility();
Run Code Online (Sandbox Code Playgroud)
但问题是,由于未知原因toggleVisibility没有添加到JQuery界面,因此我得到一个错误Property 'toggleVisibility' does not exist on type 'JQuery'.,虽然它看到其他方法(val,each等等).
为什么不起作用?