Restricciones de tipo en ts, el tipo de unión se convierte en un tipo único

Descripción del problema: los parámetros obtenidos del backend o transportados desde otras páginas deben obtenerse en una página determinada. El valor obtenido puede ser un tipo de unión, similar a cadena | cadena [] o número | indefinido, y ts tiene una declaración de tipo estricta, cuando necesitemos usar este valor, vscode informará un error.

Solución: Entonces, ¿cómo convertir esta cadena de tipo combinado|cadena[] en una cadena de tipo único? La solución es utilizar la aserción de tipo as en ts para indicarle al analizador el tipo real de la variable.

 

Estos son los problemas reales que encontré :

analizar el problema:

La identificación aquí es un parámetro obtenido de la página de lista transportada a través del enrutamiento, y el tipo de valor obtenido es cadena o cadena []

f23bacdffede4c168f6ecee65a833bd4.png

 

Dado que el parámetro id requerido por el backend para obtener detalles es de tipo número, se usa parseInt para la conversión. Como resultado, el compilador mostrará que la cadena [] no se puede convertir en una cadena (porque el tipo de cadena puede convertir una cadena en un número mediante el método parseInt) 1539d77f40dd41b4843715316cd3614a.png

 Solución : Solo necesitamos usar una aserción de tipo para resolver el problema. Aquí convertimos el tipo de route.params.id en cadena y finalmente lo convertimos en tipo numérico mediante el método parseInt.

90c9b12a0e7a4666b76eb0b5a9f09f1a.png

 Nota: Esta conversión solo es aplicable a la conversión de tipo generada por la inferencia predeterminada del compilador. Si la define usted mismo, no se puede convertir (por supuesto, las variables de código son todas de tipo autodefinido y definitivamente serán escrito de acuerdo con lo que necesitan. No. Si surge una situación tan ambigua, no buscaré esta pregunta).


También es bastante emotivo. Aprendí aserciones de tipo cuando estudiaba ts antes, pero nunca las usé y casi me olvidé de ellas. Esta vez, cuando estaba trabajando en un proyecto, de repente me encontré con este problema y usé este tipo de aserción, así que pensé sobre grabarlo.


por cierto:

Las afirmaciones de tipo se pueden utilizar para indicarle al analizador el tipo real de una variable.

Sintaxis: variable como
           variable tipo <tipo> 

let e: unknown;
let s: string;

s = e as string;
s = <string>e

Para obtener más conocimientos detallados relacionados con ts específicos, puede consultar mi otro artículo: Notas de estudio de TypeScript_blog de lilil_jing-blog CSDN

 

 

 

Supongo que te gusta

Origin blog.csdn.net/m0_53703061/article/details/129454976
Recomendado
Clasificación