我只想用我的KeyboardEvent来做这件事
var tag = evt.target.tagName.toLowerCase();
Run Code Online (Sandbox Code Playgroud)
虽然Event.target的类型为EventTarget,但它不会从Element继承.所以我必须这样投:
var tag = (<Element>evt.target).tagName.toLowerCase();
Run Code Online (Sandbox Code Playgroud)
这可能是因为有些浏览器没有遵循标准,对吧?TypeScript中与浏览器无关的正确实现是什么?
PS:我正在使用jQuery来捕获KeyboardEvent.
找到正整数位数的最佳方法是什么?
我找到了这3种基本方法:
转换为字符串
String s = new Integer(t).toString();
int len = s.length();
Run Code Online (Sandbox Code Playgroud)for循环
for(long long int temp = number; temp >= 1;)
{
temp/=10;
decimalPlaces++;
}
Run Code Online (Sandbox Code Playgroud)对数计算
digits = floor( log10( number ) ) + 1;
Run Code Online (Sandbox Code Playgroud)你可以在大多数语言中计算log10(x)= ln(x)/ ln(10).
首先我认为字符串方法是最脏的,但我想的越多,我认为这是最快的方法.或者是吗?
我来自Eclipse背景,我显然错过了一些东西.
现有一个带有JS代码的GitHub项目,我想开始为它添加TypeScript特性,一次一种类型.
我已经按照本教程将项目从GitHub克隆到我的"本地git存储库".现在,Team Explorer窗口将其显示为本地存储库,我可以提交更改等,但它不是项目,我不知道如何将其作为项目打开(我想将其作为TypeScript项目打开).
我从Eclipse习惯的工作流程只是新建 - >其他 - > SVN - > SVN的Checkout项目,New Project Wizard自动跟随.
如何从GitHub克隆现有的JS项目并使其成为TypeScrip项目,同时保留现有的文件夹结构?
编辑:我使用的是Visual Studio Express,我只限于原生的Git扩展.
我试图在TypeScript中实例化新的HTMLDivElement
var elem = new HTMLDivElement();
Run Code Online (Sandbox Code Playgroud)
但浏览器抛出
Uncaught TypeError: Illegal constructor.
Run Code Online (Sandbox Code Playgroud)
解决方法似乎是使用
var elem = document.createElement('div');
Run Code Online (Sandbox Code Playgroud)
但由于种种原因,我觉得这个次优.
为什么我不能在lib.d.ts中有一个新的关键字时直接实例化DOM元素?
declare var HTMLDivElement: {
prototype: HTMLDivElement;
new (): HTMLDivElement;
}
Run Code Online (Sandbox Code Playgroud) 我可以根据TypeScript 1.8或2.0中字符串文字类型参数的值来设置变量返回类型吗?
type Fruit = "apple" | "orange"
function doSomething(foo : Fruit) : string | string[] {
if (foo == "apple") return "hello";
else return ["hello","world"];
}
var test : string[] = doSomething("orange");
Run Code Online (Sandbox Code Playgroud)
错误:TS2322:输入'string | string []'不能赋值为'string []'.
我只是想知道是否可以键入具有联合类型的数组,因此一个数组可以包含苹果和橙子,但没有别的.
就像是
var arr : (Apple|Orange)[] = [];
arr.push(apple); //ok
arr.push(orange); //ok
arr.push(1); //error
arr.push("abc"); // error
Run Code Online (Sandbox Code Playgroud)
针说上面的例子不起作用所以这可能是不可能的,或者我错过了什么?
可以在TypeScript生成的代码上使用JSlint仍然教我编写更好的代码吗?如果是,你可以提供一两个例子吗?
谢谢
是否可以在浏览器中查看(调试)从DOM元素触发的自定义事件?
假设我想看看Bootstrap Collapse的哪个特定元素触发show.bs.collapse事件,我可以以某种方式在Chrome露水工具中看到它吗?
...不限制iframe内的滚动或需要专门命名/标记所有可滚动元素.
想象一下嵌入在父页面中的谷歌地图小部件.放大窗口小部件时,显然不希望父页面滚动.
我以为我前一个问题的答案解决了这个问题:
在iframe内滚动时,身体对那里发生的事情一无所知.但是当iframe卷轴到达底部或顶部时,它会滚动到正文.
取消从iframe传播的事件.
但该解决方案在Firefox中不起作用,因为Firefox不会 - 按设计 - 将iframe捕获的事件传播到父页面,但奇怪的是它会滚动父页面.在这里看到jsfiddle.
$('body').bind('mousewheel DOMMouseScroll', onWheel);
function onWheel (e){
if (e.target === iframe)
e.preventDefault();
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
那么,当用户在Firefox中缩放嵌入式iframe中的内容时,如何防止页面滚动?
在TypeScript中我有一个类 Foo
class Foo {}
Run Code Online (Sandbox Code Playgroud)
我想要Foo的实例数组.有什么区别
var foos : Array<Foo>;
Run Code Online (Sandbox Code Playgroud)
和
var foos : Foo[];
Run Code Online (Sandbox Code Playgroud)
在我看来,两者都定义给定类型的实例数组,是否有任何区别?
编辑:这些结构的名称是什么?我该如何正确引用它们?
typescript ×6
algorithm ×1
arrays ×1
counting ×1
digits ×1
dom ×1
dom-events ×1
firefox ×1
github ×1
iframe ×1
javascript ×1
jslint ×1
mousewheel ×1
syntax ×1