tengo un tipo
type Rating = 0 | 1 | 2 | 3 | 4 | 5 | numberAhora quiero hacer algo como esto.
let myRating:Rating = 4 let rate:number = myRating as number ¿Cómo puedo convertir mi myRating en un tipo de number primitivo?
Me está dando error como:
La conversión del tipo 'Calificación' al tipo 'número' puede ser un error porque ningún tipo se superpone lo suficiente con el otro. Si esto fue intencional, primero convierta la expresión a 'desconocido'.ts(2352)
He pasado por esto , pero lo que quiero es al revés.
Editar:
tsconfig.json
{ "compilerOptions": { "noImplicitAny": false, "target": "es6", "allowJs": true, "skipLibCheck": false, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, "module": "esnext", "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, "jsx": "preserve", "strict": true }, "include": [ "src" ] }versión tsc: 3.2.1
Tratar:
myRating as unknown as number Además, elimine | number de su declaración.
Explicación: no puede convertir de un personalizado a un primitivo sin borrar primero el tipo. unknown borra la verificación de tipo.
Actualización de TS 3.8
ahora no es necesario emitir usando como, se admite implícitamente, excepto en algunos casos. Donde puede hacer conversión de tipo como se indica en la respuesta aceptada. Aquí hay una buena explicación de la conversión de tipo en el mecanografiado .
type Rating = 0 | 1 | 2 | 3 | 4 | 5; let myRating:Rating = 4 let rate:number = myRating;Creo que está arreglado en la actualización de mecanografiado TS 3.5.1
type Rating = 0 | 1 | 2 | 3 | 4 | 5; let myRating:Rating = 4Ahora
let rate:number = myRating;y
let rate:number = myRating as number;ambos funcionando bien.