ts 如果方法参数args有可能是undefined,如何结构赋值args
时间: 2024-03-12 15:44:20 浏览: 131
visit-args:访问直接映射到命令行参数并发出标志事件的应用程序方法
在 TypeScript 中,如果一个参数可能是 `undefined`,那么你可以使用可选链操作符( `?.`) 来结合解构赋值来避免出现 `TypeError`。示例如下:
```typescript
function foo({ id, name }: { id?: number, name?: string } = {}) {
console.log(id, name);
}
// 调用时传入 undefined
foo(undefined);
// 调用时传入有值的对象
foo({ id: 1, name: 'John' });
```
在这个示例中,我们定义了一个函数 `foo`,它接受一个对象作为参数,对象中包含了两个可选属性 `id` 和 `name`。我们在函数签名中使用了 `{ id?: number, name?: string } = {}` 这样的语法来指定这个对象的类型,并将默认值设置为一个空对象 `{}`。这样做的目的是为了在调用函数时,如果不传入参数,那么函数也能正常执行。
当我们在函数内部使用解构赋值来获取参数对象中的属性值时,我们可以使用可选链操作符来避免出现 `TypeError`。例如,如果我们想获取 `id` 和 `name` 属性,可以这样写:
```typescript
function foo({ id, name }: { id?: number, name?: string } = {}) {
console.log(id?.toString(), name?.toUpperCase());
}
```
在这个示例中,我们使用了可选链操作符 `?.` 来获取 `id` 和 `name` 属性,并使用了一些字符串函数来对这些属性进行处理。如果 `id` 或 `name` 属性不存在,那么代码也不会抛出异常。
阅读全文