Avatar ·

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)) {