如何修复类型 '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 中的“以下属性中缺少类型''...”错误?

如何修复未知标签类型:“连续”?

如何修复此类型错误?

如何修复'Typescript“正在进行类型检查......”花费太长时间'?

SwiftUI 如何修复“无法推断复杂的闭包返回类型;添加显式类型以消除歧义”