无法调用类型缺少调用签名的表达式。类型'typeof“”'没有兼容的调用签名React TypeScript

时间:2017-04-25 12:34:21

标签: javascript reactjs typescript

我正在尝试将三个脚本从Javascript转换为TypeScript。这些脚本可以在gist中找到。但是我确实有一个错误,我无法摆脱。请注意,这是我的第一个React和TypeScript项目,所以我很容易错过一些明显的东西。我正在使用.tsx个文件和TypeScript 2.1。

在文件中:GoogleApiComponent.tsx

import * as cache from './ScriptCache'
...
componentWillMount() {
    this.scriptCache = cache({ <--Error TS2349 here
        google: GoogleApi({
            apiKey: apiKey,
            libraries: libraries
        })
    });
}

给我这个错误:

Cannot invoke an expression whose type lacks a call signature. Type 'typeof "ScriptCache"' has no compatible call signatures.

ScriptCache.tsx看起来像这样:

let counter = 0;
let scriptMap = new Map();

export const ScriptCache = (function (global: any) {
    return function ScriptCache(scripts: any) {
        const Cache: any = {}
        ...

2 个答案:

答案 0 :(得分:3)

看起来你的导入不正确:)

请尝试像import cache from './ScriptCache'一样导入它。如果你刚刚使用了gist中的代码,那么缓存也会被导出为默认值。

如果这不起作用,请尝试import { ScriptCache as cache } from './ScriptCache'。您不需要as语法。这样您就不必更改变量名称。

答案 1 :(得分:1)

根据@Sebastian Sebald的建议,这是一个导入错误。

错:

import * as cache from './ScriptCache'

正确:

import cache from './ScriptCache'