使用VS 2013.安装了TypeScript 1.5并按照问题/建议升级后:
"您的项目使用的TypeScript版本早于Visual Studio当前安装的版本。如果您尝试构建项目,可能会出错。您是否希望我们升级项目文件中的TypeScriptToolsVersion,以便您再也看不到此警告?"
我遇到了一堆错误:
错误39构建:属性'已禁用'类型' HTMLElement'。
上不存在对于以下陈述:
document.getElementById("btnExcel").disabled = false;
禁用'卷曲下划线。
在https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes上,参考1.5版,它说: "调整大小,禁用,uniqueID,removeNode,fireEvent,currentStyle,runtimeStyle上的属性将从HTMLElement类型中删除"
现在我改写那些"错误的"像这样的陈述:
document.getElementById("btnExcel").setAttribute('disabled', 'disabled');
对我来说,这看起来很奇怪。
这可以在TypeScript 1.5中以类型安全的方式更优雅地表达吗?你能举两个例子:启用和禁用吗?
感谢您的帮助!
答案 0 :(得分:41)
应该有一种更简洁的方法:
var element = <HTMLInputElement> document.getElementById("btnExcel");
element.disabled = true;
或者如果您更喜欢一个班轮:
(<HTMLInputElement> document.getElementById("btnExcel")).disabled = true;
似乎getElementById
等应该是通用方法并接受类型参数。也就是说,一般的方法不会给你任何类型转换的东西。
答案 1 :(得分:1)
我在 Angular 9 中使用 "typescript": "~3.8.3"。 要成功禁用按钮,请尝试:
let button = <HTMLButtonElement> document.getElementById('confirmBtn');
button.disabled = true;
答案 2 :(得分:0)
我正在使用TypeScript v 3.7.something。在这里
(document.getElementById('button') as HTMLInputElement).disabled = false;
首选。 (由@Martin的答案指导)
答案 3 :(得分:0)
使用<HTMLInputElement>
解决的问题
试试这个..
var previous = <HTMLInputElement>document.getElementById('previous');
previous.disabled = true;