设置TypeScript对象传递的参数的默认值
设置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日
现在Typescript支持默认参数:
https://www.typescriptlang.org/docs/handbook/functions.html
此外,添加默认值允许您省略类型声明,因为它可以从默认值中推断出:
function sayName(firstName: string, lastName = "Smith") { const name = firstName + ' ' + lastName; alert(name); } sayName('Bob');
实际上,现在似乎有一种简单的方法。以下代码适用于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();