微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在.tsx文件中强制转换?

如何解决如何在.tsx文件中强制转换?

我在.tsx文件中编写了一些代码,我需要强制转换变量,但它不起作用,我也不明白为什么。

那是我的代码

let a : number = 2;
let b : string = a as unkNown as string;
console.log("b type = "+typeof(b))

这就是结果:

b type = number

我认为这是因为我先转换为unkNown然后转换为字符串,但我不知道为什么要这么做,但是如果我只写:let b : string = a as string;,则会收到以下错误

ERROR in App.tsx(59,22)
  TS2352: Conversion of type 'number' to type 'string' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional,convert the expression to 'unkNown' first.

那么有人知道如何在.tsx文件中进行转换吗? (不能使用进行类型转换,否则将其视为React元素)

解决方法

如果您熟悉强类型语言的类型转换,则可能会误解as string在做什么。请记住,打字稿仅在编译时存在,而在运行时不存在。因此as string不会在运行时对数据进行任何更改,而只会影响在编译时如何评估事物。 as string是一种告诉打字稿的方式,“我比你更了解,所以不要在这里检查类型。即使所有证据都说这是别的,也假装它是一个字符串。”

偶尔需要使用类型断言,但是只有在确实知道打字稿不需要的情况下才应使用它。出现该错误的原因是,它很明显不是不是字符串,因此打字稿增加了一层文字:“您真的确定要我不要检查您的类型吗?” 。添加as unknown表示“是的,真的不检查我的类型”。

如果要将其从数字转换为字符串,请不要使用类型断言;编写代码将其更改为其他类型:

let b : string = a.toString();
// or
let b : string = '' + a;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?