我有这样的东西。
$('select').each(function () {
var x = (this as HTMLSelectElement).value;
(this as HTMLSelectElement).setSelectionRange(0,0);
...
});
jQuery定义文件this
的类型为HTMLELement
。
由于选择器,我知道this
的类型为HTMLSelectElement
。最好将完整功能的this
强制转换为更高的类型。
当然,我可以写var _this = (this as HTMLSelectElement)
。但是还可以更改函数的this
类型吗?像这样的东西
$('select').each(function () this as HTMLSelectElement { ...
答案 0 :(得分:2)
如果您不使用strictFunctionTypes
(或在tsconfig中将其显式设置为false),则可以显式设置this
参数的类型:
$('select').each(function (this: HTMLInputElement) {
var x = this.value;
this.setSelectionRange(0,0);
});
如果不是最简单的解决方案,那就是使用一个额外的变量
$('select').each(function () {
let local = this as HTMLInputElement;
var x = local.value;
local.setSelectionRange(0,0);
});
尽管strictFunctionTypes
,您也可以创建一个辅助函数来允许分配。
答案 1 :(得分:1)
我现在无法对其进行测试,但这应该可以:
$('select').each(function () {
var box = this as HTMLSelectElement;
var x = box.value;
box.setSelectionRange(0,0);
...
});