TypeScript Academy · Lektion

readonly-egenskaper och parameter-egenskaper

Använd readonly och kort syntax för konstruktor-egenskaper

Lektion 3 av 413 steg

readonly-egenskaper och parameter-egenskaper är en gratis lektion i TypeScript Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för TypeScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i TypeScript Academy innehåller totalt 4 lektioner.

Välkommen

readonly förhindrar att egenskaper ändras efter initieringen. Parameteregenskaper kombinerar deklaration och initiering på en enda konstruktorrad.

readonly på klassegenskaper

Deklarera en egenskap som readonly för att tillåta att den anges en gång (i konstruktorn), men förhindra senare ändringar.
class Invoice {
  readonly invoiceId: string;
  constructor(id: string) { this.invoiceId = id; }
}
const inv = new Invoice('INV-001');
// inv.invoiceId = 'INV-002'; // Error!

readonly i gränssnitt

readonly fungerar även i gränssnitt och objekttyper för att förhindra att egenskaper tilldelas på nytt.
interface Point { readonly x: number; readonly y: number; }
const p: Point = { x: 5, y: 10 };
// p.x = 0; // Error

Parameteregenskaper

Sätt en åtkomstmodifierare framför en konstruktorparameter för att deklarera en egenskap och tilldela den i ett enda steg.
class Product {
  constructor(
    public name: string,
    public price: number,
    private sku: string
  ) {} // no need to write this.name = name; etc.
}

readonly-parameteregenskaper

Kombinera `readonly` med en åtkomstmodifierare för parameteregenskaper.
class Config {
  constructor(
    public readonly host: string,
    public readonly port: number = 3000
  ) {}
}

Initiering i deklarationer

Du kan initiera en readonly-egenskap när den deklareras. Den kan inte ändras efter det.
class AppVersion {
  readonly version: string = '1.0.0';
  readonly buildDate: Date = new Date();
}

readonly jämfört med const

`const` används för blockomfattade variabler. `readonly` används för klassegenskaper och medlemmar i objekttyper. De gäller olika omfång.
const API_KEY = 'secret'; // block variable
class Service {
  readonly key: string = API_KEY; // class property
}

Readonly-objekttyp

Hjälptypen `Readonly` gör alla egenskaper i T skrivskyddade. Den passar bra för att skapa oföränderliga ögonblicksbilder.
interface User { name: string; age: number; }
const frozen: Readonly<User> = { name: 'Alice', age: 30 };
// frozen.name = 'Bob'; // Error

readonly djupfryser inte

Precis som ReadonlyArray förhindrar readonly bara att själva egenskapen tilldelas på nytt – inte att objektet som egenskapen refererar till ändras.
class Team {
  readonly members: string[] = [];
}
const t = new Team();
t.members.push('Alice'); // Allowed — the array itself is mutable!
// t.members = []; // Error — can't reassign the property

Parameteregenskaper minskar upprepning

Utan parameteregenskaper behöver du deklarera fältet, deklarera konstruktorparametern och göra tilldelningen. Med dem gör en enda rad alla tre saker.
// Without parameter properties (verbose)
class A {
  private x: number;
  constructor(x: number) { this.x = x; }
}
// With parameter properties (concise)
class B {
  constructor(private x: number) {}
}

När parameteregenskaper bör undvikas

Vissa team undviker parameteregenskaper i stora klasser eftersom egenskapsdeklarationerna döljs från klasskroppen, vilket gör det svårare att snabbt överblicka koden.

Snabb kontroll

Vad är fortfarande SANT för modifieraren readonly när du använder en parameteregenskap i TypeScript?

Sammanfattning

readonly förhindrar att egenskaper ändras efter konstruktionen. Parameteregenskaper (åtkomstmodifierare + parameternamn) deklarerar och initierar egenskaper på en enda rad. Kombinera båda för kortfattade, oföränderliga klassdesigner.
Gratis att börja

Lär dig TypeScript med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
101
Lektioner
352

Vanliga frågor

Är lektionen ”readonly-egenskaper och parameter-egenskaper” gratis?

Ja – hela texten till ”readonly-egenskaper och parameter-egenskaper” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i TypeScript Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i TypeScript Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”readonly-egenskaper och parameter-egenskaper”?

Använd readonly och kort syntax för konstruktor-egenskaper Ni övar på TypeScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig TypeScript Academy?

Du behöver inga förkunskaper. Utbildningen i TypeScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”readonly-egenskaper och parameter-egenskaper”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här TypeScript Academy-lektionen?

Ja. Varje TypeScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. TypeScript-klasser och konstruktorer
  2. Modifierarna public, private och protected
  3. readonly-egenskaper och parameter-egenskaper
  4. Implementera interface med klasser
← Tillbaka till TypeScript Academy