小编典典

设置作为参数传递的 TypeScript 对象的默认值

all

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');

在咖啡脚本中,您可以访问条件存在运算符,因此可以这样做:

param.lastName ?= 'smith'

编译成javascript:

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

阅读 60

收藏
2022-04-21

共1个答案

小编典典

实际上,现在似乎有一个简单的方法。以下代码适用于 TypeScript 1.5:

function sayName({ first, last = 'Smith' }: {first: string; last?: string }): void {
  const name = first + ' ' + last;
  console.log(name);
}

sayName({ first: 'Bob' });

诀窍是首先将要从参数对象中选择的键放在括号中,并key=value使用任何默认值。紧随其后的是:and 类型声明。

这与您尝试做的有点不同,因为您没有拥有完整的params对象,而是拥有取消引用的变量。

如果你想让它成为可选的传递任何东西给函数,?为类型中的所有键添加一个,并={}在类型声明之后添加一个默认值:

function sayName({first='Bob',last='Smith'}: {first?: string; last?: string}={}){
    var name = first + " " + last;
    alert(name);
}

sayName();
2022-04-21