Typescript + Vue.js:类型“从不”上不存在属性“ xxx”

时间:2019-03-14 16:53:24

标签: typescript vue.js

我正在尝试执行此计算方法:

get dronesFiltered(){
        const filtered = this.drones.filter((drone) => {
            return drone.id.toString().indexOf(this.filterId) > -1 && drone.name.toLowerCase().toString().indexOf(this.filterName.toLowerCase()) > -1 && drone.status.toLowerCase().toString().indexOf(this.selectedStatus.toLowerCase()) > -1 && this.statusFly(drone.fly, drone.status).indexOf(this.selectedCurrentFly) > -1;
        });
        return filtered;
    }

运行正常,但显示以下错误:

Property 'status' does not exist on type 'never'

它发生在状态,id,名称,飞行(我尝试进行过滤的每个字段)上。 我该如何处理?

这是我的组件代码:

@Component({})
export default class List extends Vue {

    drones = []
    selectedStatus = ''
    selectedCurrentFly = ''
    filterId = ''
    filterName = ''

    mounted(){
        this.listDrones(1);
    }

get dronesFiltered(){
        const filtered = this.drones.filter((drone) => {
            return drone.id.toString().indexOf(this.filterId) > -1 && drone.name.toLowerCase().toString().indexOf(this.filterName.toLowerCase()) > -1 && drone.status.toLowerCase().toString().indexOf(this.selectedStatus.toLowerCase()) > -1 && this.statusFly(drone.fly, drone.status).indexOf(this.selectedCurrentFly) > -1;
        });
        return filtered;
    }

public async listDrones(current: number) {
      try {
        const res = await dronesController.getDronesWithLimit(current);
        const resTotal = await dronesController.getDrones();
        this.totalRows = resTotal.data.length;
        this.drones = res.data;
      } catch (err) {
        console.log(err);
      }
    }
}

2 个答案:

答案 0 :(得分:1)

仅提供澄清;)

  

因为我们希望--strictNullChecks几乎总是在   与--noImplicitAny结合使用,扩大类型似乎毫无意义   空数组文字从never []到any []的数量,因为我们将立即   报告扩大后的隐式任何错误。好像更好   保留更具体的never []类型并要求程序员   如果数组实际上是要添加一个类型注释   修改。

如此处所述: TypeScript GitHub pull #8944

答案 1 :(得分:0)

我解决了我的问题,我只需要将它添加到我的“无人机”变量中(但我不明白为什么必须这样做):

drones: any[] = []