物业'原型'不存在

时间:2018-05-07 13:10:46

标签: typescript jestjs

我正在尝试使用jest并在打字稿中模拟ioredis

问题是我从typescript收到错误:

tests/__mocks__/ioredis.ts(5,9): error TS2339: Property 'prototype' does not exist on type 'Redis''

代码确实有效,但我想解决这个错误。 这是我的模拟:

// tests/__mocks__/ioredis.ts
import { Redis } from 'ioredis';

const IORedis: Redis = jest.genMockFromModule<Redis>('ioredis');

IORedis.prototype.hgetall = jest.fn().mockImplementation(async (key: string) => {
    // Some mock implementation
});

module.exports = IORedis;

我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果需要扩展的类型是通用类型,则可以在创建联合类型时使用类型变量。

interface IPrototype { prototype: any; }
type ExtendedType<A, B> = IPrototype & BasicType<A, B>;

然后您可以使用

进行投射
(myvar as ExtendedType<any, any>).prototype