TypeScript 函数参数中的问号有什么作用?
大家好!我最近开始学习 TypeScript,在函数参数中遇到了一种奇怪的写法。我看到有时在冒号和参数类型之前会加一个问号。例如:
```typescript
function greet(name?: string) {
return `Hello, ${name || 'Guest'}!`;
}
```
我知道 `: string` 表示参数应该是字符串类型。但前面的 `?` 是做什么的呢?我尝试了带参数和不带参数调用函数——两种方式似乎都能工作。但如果去掉问号,当我调用 `greet()` 而不传参数时,TypeScript 就会报错。
这个问号到底是什么意思?这是 JavaScript 的特性还是仅 TypeScript 才有?`name?: string` 和 `name: string | undefined` 有区别吗?希望能得到详细的解释和示例,因为文档写得太复杂了,而我想在实践中理解如何正确使用。
提前感谢!
<<>>