如何在TypeScript 1.5中启用/禁用按钮?

luc*_*ada 25 typescript typescript1.5

使用VS 2013.安装了TypeScript 1.5并按照问题/建议升级后:

"您的项目使用的TypeScript版本早于Visual Studio当前安装的版本.如果您尝试构建项目,可能会出现错误.您是否希望我们在项目文件中升级TypeScriptToolsVersion,这样您就不会看到此警告再次?"

我遇到了一堆错误:

错误39构建:"HTMLElement"类型上不存在属性"已禁用".

在以下陈述:

document.getElementById("btnExcel").disabled = false;
Run Code Online (Sandbox Code Playgroud)

"禁用"卷曲下划线.

https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes引用版本1.5时,它说:"调整大小,禁用,uniqueID,removeNode,fireEvent,currentStyle,runtimeStyle上的属性将从HTMLElement类型中删除"

现在我改写了这样的"错误"陈述:

document.getElementById("btnExcel").setAttribute('disabled', 'disabled');
Run Code Online (Sandbox Code Playgroud)

对我来说这看起来很奇怪.

在TypeScript 1.5中,这可以通过类型安全的方式更优雅地表达吗?你能举两个例子:启用和禁用?

谢谢你的帮助!

Mar*_*tin 47

应该有一个更清洁的方法来做到这一点:

var element = <HTMLInputElement> document.getElementById("btnExcel");
element.disabled = true;
Run Code Online (Sandbox Code Playgroud)

或者如果你喜欢一个班轮:

(<HTMLInputElement> document.getElementById("btnExcel")).disabled = true;
Run Code Online (Sandbox Code Playgroud)

似乎getElementById等等应该是通用方法并接受类型参数.也就是说,一个通用的方法不会给你任何类型转换的东西.


小智 8

我正在使用 TypeScript v 3.7.something。在这里

(document.getElementById('button') as HTMLInputElement).disabled = false;
Run Code Online (Sandbox Code Playgroud)

是首选。(以@Martin 的回答为指导)