我遇到了一个常见的情况。我需要在beforeAll
或每个。
describe('some test', () => {
beforeAll(() => {
const foo = createFoo({}, {});
});
it('returns something', () => {
// how to access foo?
});
});
如果我这样做,我无法在foo
测试中访问it
,因为它只存在于beforeAll
范围内。
为了能够访问我需要的地方,我必须在foo
内声明describe
:
describe('', () => {
let foo;
或使用
this.foo =
这两种方法的问题在于我丢失了类型信息。而且我没有为这类函数的返回类型提供显式接口。
有没有办法在以后可以访问的地方声明foo
而不会丢失类型信息?
答案 0 :(得分:0)
您可以使用non-null assertion operator(!
)放宽非null约束。
describe('some test', () => {
let foo!: SomeType;
beforeAll(() => {
foo = createFoo({}, {});
});
it('returns something', () => {
expect(foo.bar).toBe(true);
});
});