【发布时间】:2017-04-26 01:23:26
【问题描述】:
我们有以下TestComponent.ts TypeScript 类:
01: import TestVectorLayer from './TestVectorLayer'
02:
03: export class TestComponent implements OnInit {
04: private foo: any;
05:
06: constructor() { }
07:
08: const layer = new TestVectorLayer("foo");
09: }
还有下面的TestVectorLayer.ts函数:
请记住,OpenLayer 3 使用的是 Google Closure Library,这就是为什么 TestVectorLayer 不是 TypeScript 类。
01: declare let ol: any;
02:
03: const TestVectorLayer = function (layerName: string) {
04: ...
05: console.log(layerName);
06:
07: ol.layer.Image.call(this, opts);
08: }
09:
10: ol.inherits(TestVectorLayer as any, ol.layer.Image as any);
11:
12: export default TestVectorLayer;
我们收到以下错误:
Error on Line 08 in TestComponent.ts class:
[ts] 'new' 表达式,其目标缺少构造签名,隐含地具有 'any' 类型。 导入TestVectorLayer
package.json 版本的 TypeScript:
开发依赖:
"typescript": "~2.2.1"
【问题讨论】:
-
如果你想
new它为什么不能TestVectorLayer是一个类? -
@Saravana 这应该没关系,归根结底,课程只是语法糖。
-
@AluanHaddad 我已经更新了这个问题。
TestVectorLayer正在使用 OpenLayer 3,它使用 Google Closure Library。 -
@fuzz 所以你使用的是
--allowJs?我仍然有点困惑,因为如果它是第三方库,你为什么要从相对路径中使用它,而不是从带有 package.json 和许可证文件的包中使用它? -
@Saravana 确实,上课不会有什么坏处。只是为了打字的好处。
标签: javascript typescript