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

14 浏览
0 Comments

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

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

admin 更改状态以发布 2023年5月21日
0
0 Comments

现在Typescript支持默认参数:

https://www.typescriptlang.org/docs/handbook/functions.html

此外,添加默认值允许您省略类型声明,因为它可以从默认值中推断出:

function sayName(firstName: string, lastName = "Smith") {
  const name = firstName + ' ' + lastName;
  alert(name);
}
sayName('Bob');

0
0 Comments

实际上,现在似乎有一种简单的方法。以下代码适用于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设置任何默认值。然后跟随它,加上:和类型声明。

这与你尝试做的有些不同,因为你没有一个完整的params对象,而是有一个已解析变量。

如果你想使传递给函数的参数是可选的,为类型中的所有键添加?,并在类型声明之后加上={}的默认值:

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

0