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'}) {
Wenn dies einfache Argumente wären, könnten Sie dies natürlich tun mit:
function sayName(firstName: string, lastName = 'smith') {
var name = firstName + lastName;
alert(name);
}
sayName('bob');
Und in Coffeescript haben Sie Zugriff auf den Operator für bedingte Existenz, also können Sie Folgendes tun:
param.lastName ?= 'smith'
Welches kompiliert zum Javascript:
if (param.lastName == null) {
param.lastName = 'smith';
}
if(typeof x === "undefined") { … }. Nicht, dass Sie das nicht wissen, sondern nur auf den allgemeinen Fall für das OP hinweisen.
lastName?: stringdessen kann es immer nur so sein, wie SteveFenton sagte "behandelt leere Zeichenfolgen, undefinierte Zeichenfolgen und Nullwerte".
params.lastName = params.lastName || 'smith';ist das Muster, das ich benutze
params.lastName = params.lastName || 'smith';ist eigentlich ziemlich in Ordnung - sie behandelt leere Zeichenfolgen, undefinierte Zeichenfolgen und Nullwerte.