我如何使TypeScript null检查跟随Jest期望响应?



我使用Jest作为TypeScript代码的单元测试框架。下面是代码:

const result: User|null = getResult();
expect(result).not.toBeNull();
expect(result.name).toBe('Joey');  // typescript compiles `result` could be null here.

result可以是User型,也可以是null型。但是下一个expect已经确保它不为空。但是TypeScript仍然抱怨最后一条语句。有没有办法让TypeScript尊重Jest expect?

你可以使用非空断言操作符(!)来告诉TypeScript某个值不是空的。例如:

const result: User|null = getResult();
expect(result).not.toBeNull();
expect(result!.name).toBe('Joey');

或者您还可以添加一个额外的检查,以确保result在访问其name属性之前不是null,例如:

const result: User|null = getResult();
expect(result).not.toBeNull();
if (result) {
expect(result.name).toBe('Joey');
}
import assert from 'assert'
const result: User|null = getResult();
expect(result).not.toBeNull();
assert(result) // or: assert(result !== null)
expect(result.name).toBe('Joey'); 

最新更新