Es unknown
'value' is of type 'unknown'.Las palabras del propio compilador. Sin traducir — es la cadena que pegaste en el buscador.
`unknown` es el tipo que se niega a ser usado hasta que demuestres qué es. Esa negativa es toda la característica.
Reproducción
declare const value: unknown value.trim()
La compilación afirma que esto emite exactamente este código.
Por qué lo dice el compilador
`any` dice «deja de comprobar»; `unknown` dice «comprueba primero». Ocupan el mismo lugar en la jerarquía — todo es asignable a ambos — pero `unknown` no es asignable a nada sin un paso de acotado. Este error no es un obstáculo que rodear con un cast: es el tipo haciendo la única pregunta que siempre debería hacérsele a un valor que viene de fuera de tu programa.
Arreglos
- 01
declare const value: unknown if (typeof value === 'string') { value.trim() }
Acótalo. Dentro de la guarda el compilador sabe que es un `string`, y la llamada al método se comprueba como cualquier otra.
- 02
function isString(input: unknown): input is string { return typeof input === 'string' } declare const value: unknown if (isString(value)) { value.trim() }
O escribe la comprobación una vez como predicado de tipo y reutilízala. El tipo de retorno `input is string` es lo que convierte una función booleana en algo con lo que el compilador acota.
Conclusión
Recurre a `unknown` en cada frontera — JSON analizado, un error capturado, cualquier cosa de la red — y deja que este error fuerce la comprobación que te habrías saltado.