web-dev-qa-db-fra.com

Comment convertir un type personnalisé en type primitif?

J'ai un type

type Rating = 0 | 1 | 2 | 3 | 4 | 5 | number

Maintenant, je veux faire quelque chose comme ça.

let myRating:Rating = 4
let rate:number = myRating as number

Comment convertir mon myRating en number type primitif?

Cela me donne une erreur comme:

La conversion du type "Rating" en type "nombre" peut être une erreur car aucun type ne se chevauche suffisamment. Si c'était intentionnel, convertissez d'abord l'expression en `` inconnu ''. (2352)

J'ai traversé ceci , mais ce que je veux c'est son inverse

Éditer:

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"
  ]
}

version tsc: 3.2.1

6
Siraj Alam

Je pense que c'est corrigé dans la mise à jour TypeScript TS 3.5.1

type Rating = 0 | 1 | 2 | 3 | 4 | 5;
let myRating:Rating = 4

Maintenant

let rate:number = myRating;

et

let rate:number = myRating as number;

les deux fonctionnent bien.

TS Playground

0
Siraj Alam

Essayer:

myRating as unknown as number

Supprimez également | number de votre déclaration.

8
Steven Spungin