Vad är ett 'object literal' i TypeScript?


Jag ser termen 'object literal' använd mycket i TypeScript (t.ex. se detta svar) - vad menar vi egentligen med 'object literal' och hur skiljer det sig från bara ett 'object'?

Här är lite relevant dokumentation i den officiella dokumentationen:

Objekttyper

I JavaScript är det grundläggande sättet som vi grupperar och skickar runt data genom objekt. I TypeScript representerar vi dessa genom objekttyper.

Literaltyper

Förutom de allmänna typerna sträng och nummer kan vi hänvisa till specifika strängar och nummer i typpositioner.

Så jag förstår konceptet med litterala typer, när vi hänvisar till strängar eller siffror, där man talar om smalare, specifikt värde. t.ex. "bob" snarare än den bredare string.

Vad är ett objekt-literal exakt?

Svar #1

Ett objektliteral är när du använder klamrar för att skapa ett objekt, som i:

const example = { hello: "world" };

Det är i jämförelse med att skapa en instans av en klass, som i:

const now = new Date();

(Observera: objektliteraler finns också i vanlig JavaScript, inte bara i TypeScript)

Svar #2

TypeScript-handboken förklarar faktiskt inte detta, men det är väldigt enkelt. Det är i princip varje gång du använder JS-objektnotationssyntaxen ({ ... }) för att skapa ett objekt. TypeScript ser det som ett objektliteral, vilket får lite extra typkontroll.

När du använder ett objekt-literal för en typ, kommer det faktiskt att kontrollera om ditt literal innehåller nycklar som inte finns i måltypen. Vanligtvis förbises denna typkontroll (t.ex. du kan tilldela ett Apple till en Fruit-variabel). Objekt-literals kontrolleras faktiskt vid skapandet. Det finns också några andra speciella interaktioner när man använder objekt-literals för generiska parametrar.

Relaterade artiklar