TypeScript 3.0 introduce el unknown
tipo, de acuerdo con su wiki:
desconocido ahora es un nombre de tipo reservado, ya que ahora es un tipo incorporado. Dependiendo de su uso previsto de desconocido, es posible que desee eliminar la declaración por completo (favoreciendo el tipo desconocido recién introducido), o cambiarle el nombre a otra cosa.
¿Cuál es la diferencia entre unknown
y any
? ¿Cuándo debemos usar unknown
más any
?
fuente
any
es comodynamic
yunknown
es comoobject
. Me gusta,unknown
ya que es más seguro. Aunque nombres confusos.unknown
yobject
@nawfal, aunque creo que veo a qué te refieres en términos de contravarianza y covarianza (por ejemplo, se puede asignar cualquier tipoobject
deunknown
objeto, aunque se puede asignar cualquier objeto o primitivo - de manera similarunknown
puede asignarse aany
sí mismo yobject
puede asignarse adynamic
sí mismo). En una nota al margen, no estoy claro por qué los documentos de TS se refierenunknown
como un tipo superior porque realmente no contiene todos los tipos ¯_ (ツ) _ / ¯La diferencia entre desconocido y cualquiera se describe como:
Para responder a su pregunta de cuándo debe usar
unknown
más deany
:Eche un vistazo al anuncio de TypeScript 3.0 para ver ejemplos de tipos que verifican una variable de tipo
unknown
y una explicación más detallada.fuente
any
tipo:El
any
tipo representa todos los valores JS posibles. Cada tipo es asignable a escribirany
. Por lo tanto, el tipoany
es un supertipo universal del sistema de tipos. El compilador de TS permitirá cualquier operación en valores escritosany
. Por ejemplo:En muchas ocasiones, esto es demasiado indulgente con el compilador de TS. es decir, permitirá operaciones que podríamos haber conocido como resultado de un error de tiempo de ejecución.
unknown
tipo:El
unknown
tipo representa (al igual queany
) todos los valores JS posibles. Cada tipo es asignable a escribirunknown
. Por lo tanto, el tipounknown
es otro supertipo universal del sistema de tipos (juntoany
). Sin embargo, el compilador de TS no permitirá ninguna operación en valores escritosunknown
. Además, elunknown
tipo solo se puede asignar al tipoany
. Un ejemplo aclarará esto:fuente