web-dev-qa-db-ja.com

カスタム型をプリミティブ型にキャストするにはどうすればよいですか?

タイプがあります

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

今、私はこのようなことをしたいと思います。

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

myRatingnumberプリミティブ型にキャストするにはどうすればよいですか?

それは私にエラーを与えています:

タイプ「評価」からタイプ「数値」への変換は、どちらのタイプも他方と十分に重複していないため、誤りである可能性があります。これが意図的なものである場合は、最初に式を「不明」に変換します。ts(2352)

私は this を経験しましたが、私が欲しいのはその逆です

編集:

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

tscバージョン:3.2.1

14
Siraj Alam

試してください:

myRating as unknown as number

また、| number宣言から。

8
Steven Spungin

TypeScriptアップデートTS 3.5.1で修正されたと思います

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

let rate:number = myRating;

そして

let rate:number = myRating as number;

どちらも正常に動作しています。

TSプレイグラウンド

0
Siraj Alam