当前位置: 首页 > 知识库问答 >
问题:

如何将自定义类型转换为基元类型?

凌长恨
2023-03-14

我有一个类型

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

现在我想做这样的事情。

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

如何将我的 myRating 转换为数字基元类型?

它给我的错误是:

将“Rating”类型转换为“number”类型可能是错误的,因为这两种类型都没有充分重叠。如果这是有意的,首先将表达式转换为“未知”

我已经经历过了,但我想要的是它的反面

编辑:

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

共有2个答案

鲜于煜祺
2023-03-14

TS 3.8更新

现在不需要使用as进行转换,除了在某些情况下,它是隐式支持的。您可以在接受的答案中进行类型转换。这是对打字稿类型转换的一个很好的解释。

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

TS游乐场

我认为它在打字稿更新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游乐场

西门马鲁
2023-03-14

您不能在不先擦除类型的情况下从自定义转换为基元。未知擦除类型检查。

尝试:

myRating as unknown as number

或者:

myRating as any

此外,请从声明中删除|号码

 类似资料:
  • 在我的wicket应用程序中,我想对一些具有double(原始类型为“double”,而不是“double”类型)值的文本字段使用我自己的转换器。

  • 我正在尝试有一个通量通用转换器使用通用类型在Java 8。我把我的代码建立在这个答案的基础上。其思想基本上是实现这个特定的转换器->: 类型转换器->转换为我想要的任何类型。因此,我正在使用构造函数创建一个类型为的类,并返回一个方法。我想在调用上创建类似这样的多个条目:,但类类型不同。但它甚至对整数也不起作用。 当我使用此单元测试进行测试时,我得到错误:。

  • 由来 Hutool中类型转换最早只是一个工具类,叫做“Convert”,对于每一种类型转换都是用一个静态方法表示,但是这种方式有一个潜在问题,那就是扩展性不足,这导致Hutool只能满足部分类型转换的需求。 解决 为了解决这些问题,我对Hutool中这个类做了扩展。思想如下: Converter 类型转换接口,通过实现这个接口,重写convert方法,以实现不同类型的对象转换 ConverterR

  • 我有以下代码来返回对象数组,对象数组中填充了基元类型的结构元素,我不知道如何将基元类型转换为jobject,然后使用SetObjectArrayElement方法设置为ObjectArray, 下面是我的C结构信息 我的JNI代码 写入核心转储失败。核心转储已被禁用。要启用核心转储,请在再次启动Java之前尝试“ulimit-c unlimited” 包含更多信息的错误报告文件保存为:/data1

  • 我有一个< code > Java . lang . reflect . invocation handler ,我需要实现方法invoke() 我的精化中有一个类型为< code>java.lang.String的值,我需要将这个值转换成方法所期望的适当的returnType(它可以是一个像int、boolean、double这样的原语或者像Boolean、Integer、Double、Floa

  • 问题内容: 在这个奇怪的例子中,有人创建了一个新类型,它实际上只是一个字符串: 但是,此代码无法编译: 不能在返回参数中使用Foobar(CustomType类型)作为类型字符串 您将如何修复SomeFunction,使其能够返回Foobar的字符串值(“ somestring”)? 问题答案: 将值转换为字符串: