javascript - Hur man definierar valfria konstruktörsargument med standardvärden i Typescript


Är det möjligt att ha valfria konstruktörsargument med standardvärde, som detta

export class Test {
    constructor(private foo?: string="foo", private bar?: string="bar") {}
}

Det här ger mig följande fel:

Parametern kan inte ha frågetecken och initialiserare.

Jag skulle vilja skapa instanser som

x = new Test();               // x.foo === 'foo'            
x = new Test('foo1');         // x.foo === 'foo1'
x = new Test('foo1', 'bar1');

Vad är det korrekta TypeScript-sättet att uppnå detta?

Svar #1

Ett argument som har ett standardvärde är valfritt per definition, som anges i dokumentationen:

Parametrar som är standardinitierade och som kommer efter alla obligatoriska parametrar behandlas som valfria, och precis som valfria parametrar kan de utelämnas när man anropar deras respektive funktion

Det är samma för konstruktörer som för andra funktioner, så i ditt fall:

export class Test {
    constructor(private foo: string = "foo", private bar: string = "bar") {}
}

Svar #2

Du kan lägga till frågetecken efter dina argument, vilket är renare. Om du lägger till standardparametrar bör det vara valfritt som standard.

export class Test {
   foo: string; 
   bar: string;

    constructor(foo?: string, bar?: string) {
    this.foo = foo;
    this.bar = bar;
   }
}

Relaterade artiklar