首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在使用“==”时使用类型记录中类型检测的自动转换

如何在使用“==”时使用类型记录中类型检测的自动转换
EN

Stack Overflow用户
提问于 2022-03-03 03:13:00
回答 1查看 166关注 0票数 0

当我使用“==”判断字符串和数字之间的相等时,

代码语言:javascript
运行
复制
const a = '1234';
const b = 1234;
// This condition will always return 'false' since the types 'string' and 'number' have no overlap.
const c = a == b;

类型记录显示一个错误:这个条件总是返回'false‘,因为类型'string’和'number‘没有重叠。

但是我们知道代码工作在javascript中;

打字稿操场

那么,除了使用数字函数进行转换之外,还有什么方法可以消除错误吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-03 03:36:44

使用)来比较编译器已知的两个值,即stringnumber,总是会导致这个错误。您可以对其中一个值使用类型断言,也可以使用抽象来进行比较(如下面示例中的函数):

TS游乐场

代码语言:javascript
运行
复制
function areEqual (a: unknown, b: unknown): boolean {
  return a == b;
}

const a = '1234';
const b = 1234;
let c: boolean;

c = a == b; /*
    ~~~~~~
This condition will always return 'false' since the types 'string' and 'number' have no overlap.(2367) */

c = areEqual(a, b); // ok
c =  a as unknown == b; // ok

但是,如果编译器不确定这些值是stringnumber,那么直接比较就不会有问题:

TS游乐场

代码语言:javascript
运行
复制
let a = '1234' as string | number;
let b = 1234 as string | number;

const c = a == b; // ok
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71331703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档