Quais as diferenças entre os tipos String e string no TypeScript?
Olá a todos! Comecei a estudar TypeScript recentemente e me deparei com uma situação confusa. Na documentação e em vários exemplos, vejo que para declarar variáveis de string usam dois tipos diferentes: `String` e `string`. Por exemplo:
```typescript
let name1: string = "Alice";
let name2: String = "Bob";
```
Ambas as opções parecem funcionar, e o código compila sem erros. Mas notei que se eu usar `String` (com letra maiúscula), o TypeScript às vezes se comporta de forma estranha. Por exemplo, tentei escrever assim:
```typescript
let greeting: String = new String("Hello");
let message: string = "World";
// Isso não funciona:
// let result: string = greeting + message; // Erro?
```
Embora em JavaScript tudo funcionasse. Também vi que alguns desenvolvedores reclamam quando alguém usa `String` em vez de `string`. Por favor, me expliquem qual é a diferença? Por que o TypeScript permite usar ambas as opções? E qual delas é a correta para o desenvolvimento do dia a dia? Desde já agradeço.