typescript - Hvordan løse Vuejs composition APIs Ref()-typefeil?


Jeg bruker Vue Composition API og bruker en ref for et array av objekter hvor hvert objekt har en value-egenskap, det ser ut til at TypeScript forveksler refens verdi med egenskapen value inne i hvert array:

Som du ser på bildet ovenfor, forteller typescript oss at typen til arr er et array av objekter som inneholder name og value, men når jeg brukte ref, oppdager den feil type. Selv om jeg brukte as-konvertering som nedenfor, løser ikke problemet seg:

const arr2 = ref(arr as { name: string; value: number }[]);

Men når jeg endrer verdi-egenskapen til value2 eller noe annet, vil det fungere:

oppdatering:

her er et annet problem som jeg har møtt i dag:

Jeg lurer på hvordan jeg skal løse denne typefeilen?

Svar #1

Det er synd at du har brukt et bilde for å vise koden din, fordi jeg må skrive alt på nytt.

Ja, det ser klart ut at det å bruke 'value' som en nøkkel i objektet ditt forvirrer Typescript. Du kan komme rundt det ved å erklære et interface, som du deretter også bruker for å erklære arr2

    interface thing {
        name: string,
        value: number
    };

    const arr: thing[] = [
        {name: "x1", value: 1},
        {name: "x2", value: 2}
    ];

    const arr2: Ref<thing[]> = ref(arr);

    arr2.value.forEach(item => console.log(item.name + ':' + item.value));

Den beste måten å komme rundt dette på er imidlertid å ikke bruke 'value' som nøkkel i objektene dine, åpenbart, fordi det sannsynligvis er et reservert ord i Javascript og/eller Typescript.

Relaterte artikler