首页 > 解决方案 > Typescript + Vue.js:“从不”类型上不存在属性“xxx”

问题描述

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

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'

它发生在 status,id,name,fly (我试图进行过滤的每个字段)。我该如何处理?

这是我的组件代码:

@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);
      }
    }
}

标签: typescriptvue.js

解决方案


只是为了提供澄清;)

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

如此处所述: TypeScript GitHub pull #8944


推荐阅读