如何修复类型 'AsymmetricMatcher<any>' 不可分配给类型 '() => void'。在茉莉花/开玩笑
Posted
技术标签:
【中文标题】如何修复类型 \'AsymmetricMatcher<any>\' 不可分配给类型 \'() => void\'。在茉莉花/开玩笑【英文标题】:How to fix Type 'AsymmetricMatcher<any>' is not assignable to type '() => void'. in jasmine/jest如何修复类型 'AsymmetricMatcher<any>' 不可分配给类型 '() => void'。在茉莉花/开玩笑 【发布时间】:2020-03-31 14:20:06 【问题描述】:我有一个对象配置,我在其中向函数发送函数回调。
test('should create a ComponentMockwith the needed config', () =>
const config: EqListeningPlayerConfig =
// more options
myCallback: jasmine.anything()
;
sut.doYourThing(config);
expect(ComponentMock.create).toHaveBeenCalledWith(config);
);
我遇到的问题是,在更新到最新的 jest/jasmine 后,我在 myCallback: jasmine.anything()
中收到此错误:
如何修复类型“AsymmetricMatcher”不可分配给类型“() => void”。在茉莉花/开玩笑
如果我用@ts-ignore
忽略该行,我的测试将继续工作,但我想知道为什么 linter 会这样说以及如何解决它,因为我真的不明白。
【问题讨论】:
【参考方案1】:我在我的应用程序中遇到了同样的问题,我通过将麻烦的类型映射到任何jasmine.anything() as any
来解决它。也许它也能解决你的问题。
test('should create a ComponentMockwith the needed config', () =>
const config: EqListeningPlayerConfig =
// more options
myCallback: jasmine.anything() as any // < --- here is what solved my issue
;
sut.doYourThing(config);
expect(ComponentMock.create).toHaveBeenCalledWith(config);
);
【讨论】:
以上是关于如何修复类型 'AsymmetricMatcher<any>' 不可分配给类型 '() => void'。在茉莉花/开玩笑的主要内容,如果未能解决你的问题,请参考以下文章
如何修复错误:类型 'Null' 不是类型 '() => void' 的子类型
如何修复 Typescript 中的“以下属性中缺少类型''...”错误?