Ich habe eine Schnittstelle in TypeScript.
interface Employee{
id: number;
name: string;
salary: number | null;
}
Ich möchte das salary
als ein optionales Feld machen (Wie wir es in C# machen können). Ist das in TypeScript möglich?
Ich habe eine Schnittstelle in TypeScript.
interface Employee{
id: number;
name: string;
salary: number | null;
}
Ich möchte das salary
als ein optionales Feld machen (Wie wir es in C# machen können). Ist das in TypeScript möglich?
Der nullable Typ kann Laufzeitfehler aufrufen. Deshalb ist es ratsam, die Compiler-Option --strictNullChecks
zu verwenden und number | null
als Typ zu deklarieren. Auch im Falle einer verschachtelten Funktion, auch wenn der Eingabetyp null ist, kann der Compiler nicht wissen, was es zerstören könnte. Daher empfehle ich, das Ausrufezeichen !
zu verwenden.
function broken(name: string | null): string {
function postfix(epithet: string) {
return name.charAt(0) + '. the ' + epithet; // Fehler, 'name' ist möglicherweise null
}
name = name || "Bob";
return postfix("great");
}
function fixed(name: string | null): string {
function postfix(epithet: string) {
return name!.charAt(0) + '. the ' + epithet; // ok
}
name = name || "Bob";
return postfix("great");
}
Referenz. https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-type-assertions
typ MitNullableFeldern = {
[K in keyof T]: K erweitert Felder
? T[K] | null | undefined
: T[K]
}
let mitNullableGehalt: MitNullableFeldern = {
id: 1,
name: "John",
gehalt: null
}
Oder Sie können strictNullChecks ausschalten ;)
Und die umgekehrte Version:
typ MitNichtNullableFeldern = {
[K in keyof T]: K erweitert Felder
? NonNullable
: T[K]
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.