类型错误:不是在笑话测试中的函数

时间:2019-09-03 02:53:40

标签: reactjs typescript jestjs enzyme

经皮和酶测试的成分具有一定的功能。然后,此功能将使用导入的库。

会出错。

-测试代码

it('Emoji should be rendered without error', () => {
    const messageItem = shallow(
      <MessageItem {...props}/>
    )
   ...
})

-MessageItem

import * as getUrls from 'get-urls';

export class MessageItem extends Component <Props> {
  state = {
    isOpenThread: false,
    isAddEmoji: false,
    containedUrl: ''
  }

  getContainUrl = () => {
    //getUrls makes error!
    const urls = getUrls(this.props.content).values(); 
    const firstUrl: string = urls.next().value;
    return firstUrl
  }
  ...
  render(){
    return (... <UrlInfoArea {...props} url={this.getContainUrl()} />))
  }
}

-错误消息

 TypeError: getUrls is not a function

      37 |
      38 |   getContainUrl = () => {
    > 39 |     const urls = getUrls(this.props.content).values();
         |                  ^
      40 |     const firstUrl: string = urls.next().value;
      41 |     return firstUrl
      42 |   }

它在运行时正常工作。

有什么解决办法吗?

1 个答案:

答案 0 :(得分:0)

get-urls导出单个函数和get-urls uses the export = syntax的类型定义。

基于TypeScript documentation on export =,导入get-urls的正确方法是使用import = require()语法,如下所示:

import getUrls = require('get-urls');