检查打字稿中的null

时间:2020-01-08 08:10:54

标签: javascript node.js typescript

我在打字稿中有这段代码:

console.log ('collection[0]  -> ' + collection[0] );
console.log ('collection[0] !== null -> ' + collection[0] !== null);

但这是控制台上的结果:

console.log src/services/service.ts:122
  collection[0]  -> null
console.log src/services/service.ts:123
  true

4 个答案:

答案 0 :(得分:1)

我敢打赌,您的collection[0]是一个包含'null'的字符串,而不是原始值null。试试:

console.log (collection[0] !== 'null');

当转换为字符串时,它也可能是导致'null'的对象:

const item = collection[0];
const isWeirdNullObj = typeof item === 'object' && item !== null && String(item) === 'null';

可能会发生以下情况:

const item = {
  valueOf() {
    return 'null';
  }
};
console.log('item is ' + item);
console.log(typeof item);

答案 1 :(得分:1)

加法运算符优先于相等运算符。

因此,在您的代码中,首先对加法运算进行评估。尝试以下方法:-

console.log ('collection[0] !== null -> ' + (collection[0] !== null));

答案 2 :(得分:0)

您对JavaScript的类型强制性感到厌倦。 JS中的+运算符具有许多与其相关的操作。我建议您不要concat使用它,而应使用字符串插值代替。

console.log(`collection[0] !== null -> ${collection[0] !== null}`);

另一个选择是用逗号分隔两个操作。 console.log可以接受任意数量的参数并将其组合起来

console.log ('collection[0] !== null -> ', collection[0] !== null);

答案 3 :(得分:0)

如果要记录一些变量,请使用,代替+

var collection = [null];
console.log ('collection[0]  -> ', collection[0] );
console.log ('collection[0] !== null -> ', collection[0] !== null);