角度错误:WordCloud不是函数

时间:2019-06-24 11:40:45

标签: angular angular7 typescript-typings external-js wordcloud2

我仍然对角度不熟悉, 我试图在我的应用程序中使用wordcloud2,但在尝试调用该函数时出现错误WordCloud不是函数。

wordcloud2.js包含WordCloud函数,我尝试导入它, 但我编码了上述问题,我想我缺少了一些东西, 我认为声明可以识别,但不能识别功能。

请参见所附的代码示例:

https://stackblitz.com/edit/angular-7hsahs

角度错误:WordCloud不是函数

2 个答案:

答案 0 :(得分:1)


更改第2行 import WordCloud from 'wordcloud';
到:
WordCloud()

这两个import语句之间的区别在于,您所使用的语句将整个模块作为一个对象导入,而import WordCloud from 'wordcloud';函数是其属性。类型定义不支持该类型,因此TypeScript将引发错误,因为您不正确地告诉TypeScript导入模块的类型。
如果改为使用export function foo() {return "bar";} export const BAR = "foo"; 导入,则只能获取类型声明中默认描述为导出的函数。

基本上,您有几种不同的导出形式:

import {foo, BAR} from './foobar';
console.log(foo(), BAR); // "bar", "foo"

在这里,您可以像这样导入不同的变量:

import * as foobar from './foobar';
console.log(foobar.foo(), foobar.BAR); // "bar", "foo"

或者这个:

export default function foo() {return 'bar';}

或者您有一个带有默认导出的导出,如下所示:

import foo from './foo';
console.log(foo()); // "bar"

在这种情况下,您可以这样导入:

import {default as foo} from './foo';
console.log(foo()); // "bar"

或者这个:

import bar from '.\foo';

尽管,如果给出了默认导出,则可以根据需要命名导入变量。在上面的示例中,bar()也可以工作,调用"bar"会返回{{1}}。这是因为导出的变量基本上没有导出其名称,而是使用特殊名称“默认”。

您可以在此处阅读有关在TypeScript中进行导入的更多信息:
https://blog.jdriven.com/2017/06/typescript-and-es6-import-syntax/

答案 1 :(得分:0)

尝试像这样更改第49行:

WordCloud.default(document.getElementById("my_canvas"), {
            list: temp});
您提供的stackblitz中的

我在WordClound名称空间中看到了“默认”功能。 希望对您有帮助!