我正在从jest迁移到vitest。在这个过程中,我正在转换这些:
// Jest
const myLib = jest.requireActual("mylib.js")
字符串
对这些:
// Vitest
const myLib = await vi.importActual("myLib.js")
型
很好,除了Jest,我没有类型错误,但是Vitest,我得到:
第一个月
我可以访问myLib
的成员,并且可以看到它们的类型是正确的,但是对myLib
的任何访问都会导致错误:
// Thing[] is inferred. Error is on **myLib**.things
const things: Thing[] = myLib.things
型
在调查(在WebStorm中简单地将鼠标悬停在myLib
上)每个场景中的类型时,我看到Jest为myLib
的类型提供了any
,而Vitest提供了unknown
。
我的tslog.json中有noImplicitAny: true
,所以我认为我应该在any
上也得到一个错误。
但无论如何,为什么会有区别,如果myLib
本身是unknown
,那么TypeScript如何判断myLib.things
是Thing[]
类型,我应该怎么做?
1条答案
按热度按时间p5cysglq1#
我想处理这个问题的一个简单方法是简单地执行
await vi.importActual("myLib.js") as Record<{a: b}>
,其中a
是您在测试中访问的某个成员,b
是该成员的类型。然而,我仍然不明白如何从
unknown
推断出Thing[]
。