Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “string | number | string[]”类型的参数不能分配给“string”类型的参数_Javascript_Jquery_Typescript - Fatal编程技术网

Javascript “string | number | string[]”类型的参数不能分配给“string”类型的参数

Javascript “string | number | string[]”类型的参数不能分配给“string”类型的参数,javascript,jquery,typescript,Javascript,Jquery,Typescript,我的typescript文件中有代码 这是代码 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').pa

我的typescript文件中有代码

这是代码

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 | number | string[]”类型的参数不能分配给“string”类型的参数。 类型“number”不可分配给类型“string”

如何修复它?

val可以根据html元素的下划线类型返回几种类型之一。如果您确信这将始终是一个字符串,那么最简单的解决方案是使用类型断言来创建字符串

另一种选择是使用类型防护装置来区分不同的情况:

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")
}

你能帮我摆好小提琴吗?请阅读:
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")
}