392 Stimmen

Festlegen des Standardwerts für ein TypeScript-Objekt, das als Argument übergeben wird

function sayName(params: {firstName: string; lastName?: string}) {
    params.lastName = params.lastName || 'smith';  // <<-- any better alternative to this?
    var name = params.firstName + params.lastName
    alert(name);
}

sayName({firstName: 'bob'});

Ich hatte mir vorgestellt, dass so etwas funktionieren könnte:

function sayName(params: {firstName: string; lastName: string = 'smith'}) {

Offensichtlich, wenn es sich um einfache Argumente handelte, könntest du es mit diesem Code tun:

function sayName(firstName: string, lastName = 'smith') {
    var name = firstName + lastName;
    alert(name);
}

sayName('bob');

Und in Coffeescript hast du Zugriff auf den bedingten Existenzoperator, also kannst du Folgendes tun:

param.lastName ?= 'smith'

Was sich zu folgendem Javascript kompiliert:

if (param.lastName == null) {
    param.lastName = 'smith';
}

5voto

Ben Dev Punkte 815

Hier ist etwas zum Ausprobieren, indem Sie Schnittstelle und Destrukturierung mit Standardwerten verwenden. Bitte beachten Sie, dass "lastName" optional ist.

interface IName {
  firstName: string
  lastName?: string
}

function sayName(params: IName) {
  const { firstName, lastName = "Smith" } = params
  const fullName = `${firstName} ${lastName}`

  console.log("Voller Name-> ", fullName)
}

sayName({ firstName: "Bob" })

2voto

Ankur Sehdev Punkte 126

Ein weiterer Weg ohne Destrukturierung könnte sein, den Standardwert mit dem Typ wie folgt festzulegen:

function name(param1:type=defaultValue1, paramr2:type=defaultvalue2,...) {//}

Ein Beispiel könnte sein

function addTwoNumbers(first:number = 1, second:number = 3):number {return first+second}
console.log(addTwoNumbers())

1voto

Aakil Fernandes Punkte 6994

Ohne Destrukturierung kannst du Standardparameter erstellen und sie übergeben

Schnittstelle Name {
   Vorname: string;
   Nachname: string;
}

export const defaultName extends Omit {
    Nachname: 'Smith'
}

sayName({ ...defaultName, Vorname: 'Bob' })

CodeJaeger.com

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.

Powered by:

X