【问题标题】:Why push shows argument of type 'any[]' is not assignable to parameter of type 'never' error?为什么 push 显示类型为“any []”的参数不可分配给类型为“从不”错误的参数?
【发布时间】:2018-08-28 09:10:42
【问题描述】:

在这段代码中,我得到了休闲错误:

'any[]' 类型的参数不能分配给类型参数 '从不'

var markers: [];
this.Getlapoints(this.map.getCenter(), 500000).then(data => {
  for (var key in data) {
    Leaflet.marker(data[key].location, //{ icon: greenIcon            }
    ).addTo(this.map).bindPopup(data[key].caption);
    // markers.push(data[key].location.lat,data[key].location.lng);
    // markers.push(data[key].location);

    var lat = data[key].location.lat;
    var lng = data[key].location.lng;
    markers.push([lat, lng]);
  }
  console.log(markers);
});

【问题讨论】:

    标签: javascript typescript leaflet


    【解决方案1】:

    改变这个:

    const a = [];
    

    通过这个:

    const a = Array();
    

    【讨论】:

      【解决方案2】:

      使用var markers: [],您将markers 数组声明为具有永久空数组的类型。您可能的意思是 var markers = [] 将其初始化为空但允许添加项目。

      【讨论】:

      • 谢谢,这是我的问题的答案,但我只能像这样克服它:let all: any[] = []
      【解决方案3】:

      在 tsconfig.json -

       "noImplicitReturns": false,
      
       "strictNullChecks":false,
      

      解决方案:输入“从不”

      【讨论】:

        【解决方案4】:

        never 类型是每个类型的子类型,并且可以分配给每个类型;但是,没有类型是 never 的子类型或可分配给 never(never 本身除外)。甚至 any 也不能分配给 never。

        来自TypeScript docs

        【讨论】:

        • 我不知道你想做什么。您可以将 never 替换为 null 或空字符串或“从不”(作为字符串)。
        • 我想将所有帖子 latlang 存储在数组中以在传单中使用,LatLngBounds 以适应地图视图中的所有标记。
        猜你喜欢
        • 2022-11-08
        • 2020-03-19
        • 2019-09-06
        • 2021-12-05
        • 2018-03-19
        • 2017-02-07
        • 2019-11-02
        • 2020-12-17
        • 1970-01-01
        相关资源
        最近更新 更多