TypeScript Angular-projekt: använda undefined eller null för egenskaper i klasser?


Jag har ett Angular 6-projekt, och min fråga är vad som är det bästa sättet att definiera en nullbar egenskap på en modellklass?

Alternativ 1 : använd ?-operatorn

export class ProductModel {
    public name?: string;
}

Alternativ 2 : definiera egenskapen som string och som null

export class ProductModel {
    public name: string | null;
}

Observera att jag har satt "strictNullChecks": true i tsconfig.json.

Kanske är det bara en preferens, men om någon kan hjälpa mig genom att ge några bakgrundstips och tricks eller en referensartikel?

Svar #1

Med strictNullChecks aktiverat är name?: string; name av typen string | undefined.

Två exempel i frågan har inte bara något olika syntax utan ger också olika resultat:

type WithOptional = {
    name?: string;
}

type WithNullable = {
    name: string | null;
}

const withOptional: WithOptional = {}; // no error: name is optional 
withOptional.name = null; // error: null is not assignable to string | undefined

const withNullable: WithNullable = {}; // error: name is missing
withNullable.name = undefined // error: undefined is not assingable to string | null

Om du vill att namnet både ska vara valfritt och kunna vara null kan du definiera det som name?: string | null;

Relaterade artiklar