首页 > 解决方案 > Algolia Places.js 抛出错误:“无法调用类型缺少调用签名的表达式。”

问题描述

我正在使用以下行导入 Algolia 的 places.js:

import * as places from 'places.js';

再往下:

const placesAutocomplete = places({
    appId: 'plTI5MDAXXXX',
    apiKey: '7d055eac95a6c48eb4939d2d5edXXXX',
    container: document.querySelector('#address-input')
});

我收到以下错误:

错误 TS2349:无法调用其类型缺少调用签名的表达式。

类型 `typeof import("ionic/XXXX/node_modules/places.js/typings")' 没有兼容的调用签名。

我已经尝试安装DefinitelyTyped/DefinitelyTyped无济于事。

标签: javascriptangularjstypescriptionic-frameworktypescript-typings

解决方案


将导入行更改为:

import places from 'places.js';

致力于places.js包的最新更新。

仅供参考:在长期使用类型之后,我还必须解决与类型相关的问题。一旦上述错误得到修复,就会弹出此错误:

类型“元素”不可分配给类型“字符串 | HTML输入元素'。[ng] 类型“元素”不可分配给类型“HTMLInputElement”。

这是通过显式投射到容器上来解决的:

const placesAutocomplete = places({
    appId: 'plTI5MDAXXXX',
    apiKey: '7d055eac95a6c48eb4939d2d5edXXXX',
    // The following change: <HTMLInputElement>
    container: <HTMLInputElement>document.querySelector('#address-input')
});

推荐阅读