Sir*_*lam 5 javascript types casting typescript
我有一个类型
type Rating = 0 | 1 | 2 | 3 | 4 | 5 | number
Run Code Online (Sandbox Code Playgroud)
现在我想做这样的事情。
let myRating:Rating = 4
let rate:number = myRating as number
Run Code Online (Sandbox Code Playgroud)
如何将我myRating转换为number原始类型?
它给我的错误是:
从“评级”类型到“数字”类型的转换可能是错误的,因为这两种类型都没有足够的重叠。如果这是故意的,请先将表达式转换为“未知”。ts(2352)
我已经经历过了,但是我想要的是它的逆转
编辑:
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"
]
}
Run Code Online (Sandbox Code Playgroud)
tsc版本:3.2.1
尝试:
myRating as unknown as number
Run Code Online (Sandbox Code Playgroud)
另外,| number从声明中删除。
TS 3.8 更新
现在不需要使用 as 进行强制转换,它是隐式支持的,除非在某些情况下。您可以在哪里进行接受的答案中给出的类型转换。这是typescript 上类型转换的一个很好的解释。
type Rating = 0 | 1 | 2 | 3 | 4 | 5;
let myRating:Rating = 4
let rate:number = myRating;
Run Code Online (Sandbox Code Playgroud)
我认为它已在打字稿更新 TS 3.5.1 中修复
type Rating = 0 | 1 | 2 | 3 | 4 | 5;
let myRating:Rating = 4
Run Code Online (Sandbox Code Playgroud)
现在
let rate:number = myRating;
Run Code Online (Sandbox Code Playgroud)
和
let rate:number = myRating as number;
Run Code Online (Sandbox Code Playgroud)
两者都工作正常。
| 归档时间: |
|
| 查看次数: |
3096 次 |
| 最近记录: |