O que a palavra-chave `is` faz no TypeScript e como usá-la corretamente?
Olá a todos! Comecei a estudar TypeScript e me deparei com a palavra-chave `is`, que é usada em alguns exemplos. Honestamente, não entendo muito bem para que ela serve e como difere do tipo de retorno comum `boolean`.
Aqui está um exemplo que encontrei:
```typescript
function isString(value: unknown): boolean {
return typeof value === "string";
}
```
Mas também vi esta variação:
```typescript
function isString(value: unknown): value is string {
return typeof value === "string";
}
```
Qual é a diferença? Eu entendo que `value is string` no tipo de retorno é uma construção especial, mas não consigo entender quando usá-la. Se eu simplesmente retornar `boolean`, o TypeScript também consegue entender que o valor é uma string após a verificação? Ou não?
Tentei escrever este código:
```typescript
function isString(value: unknown): boolean {
return typeof value === "string";
}
function processValue(value: unknown) {
if (isString(value)) {