我是TypeScript的新手,对初学者问题感到抱歉。
我正在尝试在TypeScript中创建一个新的JQueryTimer,并在按键后启动它。我正在使用DefinitelyTyped jQuery和jQuery.timer定义。
我的app.ts:
/// < reference path='references.ts'/>
module app {
function addKeyToString(e) {
$("body").timer(
function () {
console.log("This function just got called");
}, 10000, true
);
document.getElementById("typingSpan").innerText += e.char;
}
document.onkeypress = addKeyToString;
}
我的index.html看起来像这样:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>TypeScript HTML App</title>
<script src="lib/jquery/jquery.js"></script>
<script src="lib/jquery/jquery-ui.min.js"></script>
<script type="text/javascript" src="app.js"></script>
<script src="lib/jquery/jquery.timer.js"></script>
<link rel="stylesheet" href="app.css" type="text/css" />
</head>
<body>
<h1>TypeScript HTML App</h1>
WriteHere: <span id="typingSpan"></span>
</body>
</html>
当我试图启动它并按一个键时,我收到运行时错误(在我的函数的第一行),其中说:
对象不支持属性或方法'timer'
有人能告诉我问题的解决方案是什么?我检查了DefinitelyTyped示例,并根据它应该工作。这是链接:Link
答案 0 :(得分:1)
您应该参考图书馆的文档https://github.com/jchavannes/jquery-timer
这给出了示例用法:
var timer = $.timer(function() {
alert('This message was sent by a timer.');
});
对d.ts文件的测试不一定是正确的,不应该用作参考文档。我不知道为什么这个似乎是错的。
答案 1 :(得分:0)
我猜测TypeScript测试(不是由库作者编写)可能在它创建时(2013年)起作用,同时对TypeScript进行了重大更改。 (这是我纯粹的猜测,但整个TypeScript / ECMAScript故事现在处于不断变化的状态。)
有时最简单的&amp;大多数面向未来的事情是让JavaScript成为JavaScript,并将代码抱在JavaScript包装函数中。在.js文件内或<script>
标记内,执行之类的操作此
function createTimer() {
var timer = $.timer(function () {
timerCallback();
});
timer.set({ time: 1000, autostart: false });
return timer;
}
在.ts文件中声明var timer
和function timerCallback() { }
。这将允许您在TypeScript中使用计时器对象,尽管它不会有智能感知。
要初始化它,请执行之类的操作:
$(document).ready(function () {
timer = createTimer();
$(".start").click(function () {
timer.play();
});
});