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'});
Eu imaginei que algo assim pudesse funcionar:
function sayName(params: {firstName: string; lastName: string = 'smith'}) {
Obviamente, se esses argumentos eram claros, você poderia fazê-lo com:
function sayName(firstName: string, lastName = 'smith') {
var name = firstName + lastName;
alert(name);
}
sayName('bob');
E no coffeescript você tem acesso ao operador de existência condicional, o que pode fazer:
param.lastName ?= 'smith'
Que é compilado no javascript:
if (param.lastName == null) {
param.lastName = 'smith';
}
if(typeof x === "undefined") { … }. Não que você não saiba disso, mas apenas apontando o caso geral do OP.
lastName?: stringisso só pode ser como SteveFenton disse "lida com cadeias vazias, cadeias indefinidas e valores nulos".
params.lastName = params.lastName || 'smith';é o padrão que eu uso
params.lastName = params.lastName || 'smith';é bastante boa - ele lida com cadeias vazias, cadeias indefinidas e valores nulos.