当我使用“==”判断字符串和数字之间的相等时,
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中;
那么,除了使用数字函数进行转换之外,还有什么方法可以消除错误吗?
发布于 2022-03-03 03:36:44
使用)来比较编译器已知的两个值,即string
和number
,总是会导致这个错误。您可以对其中一个值使用类型断言,也可以使用抽象来进行比较(如下面示例中的函数):
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
但是,如果编译器不确定这些值是string
和number
,那么直接比较就不会有问题:
let a = '1234' as string | number;
let b = 1234 as string | number;
const c = a == b; // ok
https://stackoverflow.com/questions/71331703
复制相似问题