ts: for循环 Element hat implizit den Typ „any“, da der Indexausdruck nicht vom Typ „number“ ist.

ts: for循环 Element hat implizit den Typ „any“, da der Indexausdruck nicht vom Typ „number“ ist.

// beofre 
const props = defineProps({
    
    
  columns: {
    
    
    type: Array,
  }
})
function dataChange(data) {
    
    
  for (let item in props.columns) {
    
    
    // item报错:Element implicitly has an 'any' type because index expression is not of type 'number'.
    const key = props.columns[item].key;
    props.columns[item].visible = !data.includes(key);
  }
}

Lösung:

  • Die Fehlermeldung sollte darauf zurückzuführen sein, dass der Typ des Spaltenelements unsicher ist, sodass der Elementtyp der Traversierungsvariablen nicht bestimmt werden kann
  • Das Finden des spezifischen Typs von props.columns oder eines anderen scheint zu funktionieren
// after 使用any类型
function dataChange(data:any[]) {
    
    
  let columns = props.columns as Array<any>
  for (let item in columns) {
    
    
    const key = (columns[item]).key;
    columns[item].visible = !data.includes(key);
  }
}
// after 使用 column 真实类型
interface ColumnsElement {
    
    
  key: number,
  value: string,
  visible: boolean
}
const props = defineProps({
    
    
  columns: {
    
    
    type: Array<ColumnsElement>,
  }
})
function dataChange(data:any[]) {
    
    
  let columns = props.columns as Array<ColumnsElement>
  for (let item in columns) {
    
    
    const key = (columns[item]).key;
    columns[item].visible = !data.includes(key);
  }
}

Guess you like

Origin blog.csdn.net/qubes/article/details/130819933