angular - Vad betyder denna kodbit i TypeScript? public testOptions: "Undecided" | "Yes" | "No"="Undecided";
public testOptions: "Undecided" | "Yes" | "No" = "Undecided";
- Vad betyder den här kodbiten i TypeScript?
- Vilken typ av variabel är testOptions?
- Är testOptions en array, sträng eller något annat?
- Vad betyder "Nej"="Osäker"?
- Vad betyder pipesymbolen "|"?
Svar #1
Typer som separeras med en pipesymbol | kallas unionstyper och kan läsas som en ELLER-operation. Tecknet = i detta fall betecknar en tilldelning. Det betyder att egenskapen testOptions har standardvärdet "Undecided"
Din kod kan skrivas om som:
// Foo is of type string, but not just any string, only the literal values
// "Undecided", "Yes", or "No". Any other string won't match the type.
type Foo = "Undecided" | "Yes" | "No";
// Will error because "bar" is not one of "Undecided", "Yes", or "No"
const a: Foo = "bar";
// Will work
const b: Foo = "Undecided";
För att lära dig mer om de avancerade typerna i TypeScript, skulle jag starkt rekommendera dokumentationen om avancerade typer
Svar #2
I TypeScript definieras typen av en variabel som variableName: type.
Typ kan vara vad som helst.
- Primitiva värden: sträng, nummer
- Komplexa värden: MyClass1, IInterface1
Det finns också en union-operator (|) som används för att slå samman mer än 1 typ.
Så om du har en variabel som kan vara antingen ett tal eller en sträng, kommer den att definieras som variable: number | string.
Vad händer nu om du vill ha en variabel som endast kan ha specifika värden av en specifik typ?
public testOptions: "Oavgjort" | "Ja" | "Nej"="Oavgjort";
Så nu kan din testOptions ha "Undecided" | "Yes" | "No" och du kan ställa in dess standardvärde som "Undecided"
