¿Para qué se usa el signo de interrogación en los parámetros de funciones TypeScript?
¡Hola a todos! Recientemente comencé a estudiar TypeScript y me topé con una construcción extraña en los parámetros de funciones. Veo que a veces antes de los dos puntos y el tipo del parámetro colocan un signo de interrogación. Por ejemplo:
```typescript
function greet(name?: string) {
return `Hello, ${name || 'Guest'}!`;
}
```
Entiendo que `: string` significa que el parámetro debe ser un string. Pero, ¿qué hace `?` antes de esto? Intenté llamar a la función con parámetro y sin él — parece funcionar de ambas formas. Pero si quito el signo de interrogación, TypeScript comienza a quejarse cuando llamo a `greet()` sin argumento.
¿Qué significa exactamente este signo de interrogación? ¿Es alguna característica de JavaScript o solo de TypeScript? ¿Y hay diferencia entre `name?: string` y `name: string | undefined`? Agradecería una explicación detallada con ejemplos, porque en la documentación está escrito de manera complicada y en la práctica quiero entender cómo usarlo correctamente.
¡Gracias de antemano!
<<>>