我的打字稿文件中有代码
这是代码
slide(event, ui) {
$(`#stops_${i}`).val(`Max ${ui.value} ${__('byten')}`);
$(`#filter_stops_${i}`).val(ui.value);
if ((ui.value > 0) && ($('#filter_direct').val() === '1')) {
$('#filter_direct').parent().children('.Switch').removeClass('On').addClass('Off');
$('#filter_direct').val('0');
}
let stop_sum = 0;
$('.filter_stops').each(function() {
return stop_sum += parseInt($(`#filter_stops_${$(this).attr('id').split('_')[1]}`).val());
});
if ((stop_sum === 0) && ($('#filter_direct').val() === '0')) {
$('#filter_direct').parent().children('.Switch').removeClass('Off').addClass('On');
return $('#filter_direct').val('1');
}
}
但是在这一行:
return stop_sum += parseInt($(`#filter_stops_${$(this).attr('id').split('_')[1]}`).val());
当我尝试拆分时出现此错误。
[TS] 类型'字符串|的参数号码| string []'不能赋值给'string'类型的参数。 类型'number'不能指定为'string'类型。
我该如何解决?
答案 0 :(得分:1)
val
可以返回多种类型中的一种,具体取决于html元素的underling类型。如果您确定这将始终为string
,则最简单的解决方案是使用类型断言string
return stop_sum += parseInt($(`#filter_stops_${$(this).attr('id').split('_')[1]}`).val() as string);
另一种选择是使用类型保护来区分案例:
let value = $(`#filter_stops_${$(this).attr('id').split('_')[1]}`).val();
if (typeof value === "string") {
return stop_sum += parseInt(value);
}
if (typeof value === "number") {
return stop_sum += value;
} else {
throw Error("Unsupported value type")
}