检查是否在TypeScript中选中了复选框元素

Yan*_*niv 22 typescript

我的html文件上有一个复选框.

<input id="is3dCheckBox" type="checkbox" checked="checked" />
Run Code Online (Sandbox Code Playgroud)

如果选中此复选框,我想在.ts文件中知道.
在我获得此元素以进行检查后应该进行什么演员表?

Fen*_*ton 39

您只需要使用类型断言来告诉TypeScript它是一个HTMLInputElement:

var element = <HTMLInputElement> document.getElementById("is3dCheckBox");
var isChecked = element.checked;
Run Code Online (Sandbox Code Playgroud)

更新:

任何想法为什么var element = document ...工作但var元素:HTMLInputElement = document ...不?

当您使用getElementById返回的元素时,可以是任何类型的HTML元素.例如,它可以是段落标记.因此,此DOM方法的类型定义返回非常通用的HTMLElement类型.

当您尝试以下操作时:

var element: HTMLInputElement = document.getElementById('is3dCheckBox');
Run Code Online (Sandbox Code Playgroud)

编译器警告您结果getElementById不是a HTMLInputElement或子类型HTMLInputElement(因为它实际上是你想要的超类型).

当您知道元素类型时,使用类型断言告诉编译器类型是完全正常的.当您使用Type Assertion时,您可以告诉编译器您更了解.

在某些情况下,编译器在使用类型断言时仍然会警告你,因为它可以告诉断言可能是一个错误 - 但你仍然可以强制它,但首先扩大类型:

var isChecked = (<HTMLInputElement><any>myString).checked;
Run Code Online (Sandbox Code Playgroud)

any在断言之前,字符串变量被扩展为类型HTMLInputElement.希望你不需要经常使用这种类型的断言.

  • 任何想法为什么`var element = <HTMLInputElement> document ...`但是`var element:HTMLInputElement = document ...`不起作用?另外,我在TS手册上找不到这种语法,请注意你的来源? (2认同)