typescript - Egenskapen är inkompatibel med indexsignaturen


const test = [
    {
        "a": 1
    },
    {
        "b": 1
    }
]
interface t {
    [key: string]: number
}
const ttt: t[] = test

Egenskapen '"b"' är inkompatibel med indexsignaturen. Typen 'undefined' kan inte tilldelas typen 'number'. Det fungerar om jag byter namn på nyckeln till antingen b eller a eftersom båda är samma nyckel.

Svar #1

Eftersom test inte har en typ, härleds den till denna typ:

({ a: number; b?: undefined; } | { b: number; a?: undefined; })[]

test tilldelas sedan till ttt, men det är inte kompatibelt att ha en möjligtvis odefinierad b-nyckel i det nya gränssnittet t.

Du kan åtgärda detta genom att lägga till typen direkt till test:

const test: t[] = [
    {
        "a": 1
    },
    {
        "b": 1
    }
]

Relaterade artiklar