¿Cuál es la diferencia entre los tipos String y string en TypeScript?
¡Hola, colegas! Acabo de empezar a aprender TypeScript y me encontré con una situación confusa. En algunos ejemplos de código veo que para declarar una variable de tipo string se usa `string` (en minúscula), y en otros — `String` (en mayúscula). Por ejemplo:
```typescript
let name1: string = "John";
let name2: String = "John";
```
Ambas opciones funcionan, y no veo diferencia en el comportamiento. Mi código se compila sin errores en ambos casos. Pero siento que no es solo una diferencia estilística. Escuché por ahí que `String` es una clase, mientras que `string` es un tipo primitivo, pero no entiendo cómo esto afecta el uso práctico.
¿Alguien podría explicar cuál es exactamente la diferencia? ¿Cuándo se debe usar una opción y cuándo la otra? ¿Hay algún problema si uso `String` en lugar de `string`? Agradecería un ejemplo simple que demuestre las diferencias.
Ya busqué en Google, pero las respuestas en Stack Overflow en inglés son demasiado complejas para un principiante. Me gustaría