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;
