【发布时间】:2014-06-12 10:45:18
【问题描述】:
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'});
我曾想象过这样的事情可能会奏效:
function sayName(params: {firstName: string; lastName: string = 'smith'}) {
显然,如果这些是简单的参数,您可以这样做:
function sayName(firstName: string, lastName = 'smith') {
var name = firstName + lastName;
alert(name);
}
sayName('bob');
在coffeescript中,您可以访问条件存在运算符,因此可以这样做:
param.lastName ?= 'smith'
编译成javascript:
if (param.lastName == null) {
param.lastName = 'smith';
}
【问题讨论】:
-
您建议的解决方案
params.lastName = params.lastName || 'smith';实际上相当不错 - 它可以处理空字符串、未定义字符串和空值。 -
@SteveFenton 还有任何虚假的东西。在姓氏的情况下很好,但通常不是一个好主意。这就是 Typescript 将默认值转换为
if(typeof x === "undefined") { … }的原因。并不是说你不知道,只是指出 OP 的一般情况。 -
@IngoBürk 是的,但由于
lastName?: string,它只能像 SteveFenton 所说的那样“处理空字符串、未定义字符串和空值”。 -
同意史蒂夫的观点。通常最好有一个配置参数而不是例如10 个论据。在这种情况下,
params.lastName = params.lastName || 'smith';是我使用的模式 -
typescripttutorial.net/typescript-tutorial/…
param1: type = defaultValue
标签: typescript arguments