我使用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');