gpt4 book ai didi

javascript - 单个 JavaScript 文件的 TypeScript 定义

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:13 25 4
gpt4 key购买 nike

我正在尝试在 Movilizer HTML5 View 中运行 Ionic2 应用程序。为了在 Movilizer 容器客户端和 Ionic2 应用程序之间发送数据,我需要包含一个 plugins/Movilizer.js 文件。据我了解,Movilizer 系统将用包含实际实现的文件替换该文件。文件内容如下:

//File at: src/plugins/Movilizer.js
var Movilizer = function() {};

Movilizer.prototype.readGlobalVariable = function(varName, successCB, errorCB)
{
result = "Hello World";
successCB(result);
}

var movilizer = new Movilizer();

为了能够在我的 TypeScript 文件中使用 Movilizer 接口(interface),我相信我需要创建一个 Movilizer.d.ts 定义文件。但是,我遇到了麻烦。我尝试了以下方法:

//File at: src/plugins/Movilizer/index.d.ts
//Also tried it at: src/plugins/Movilizer.d.ts
export = Movilizer;

declare class Movilizer {
constructor();

readGlobalVariable(key: string, onSuccess: (value: string) => void, onError: () => void): void;
}

我还尝试在 tsconfig.json 文件中引用 .d.ts 文件。添加此内容不会改变任何内容:

//File at: tsconfig.json
(...)
"files": [
"src/plugins/Movilizer/index.d.ts"
],
(...)

我尝试按如下方式使用 FooPage 中的文件。这确实可以编译:

//File at: src/pages/foo/foo.ts
import {Component} from '@angular/core';
import {NavController} from 'ionic-angular';
import Movilizer from '../../plugins/Movilizer';

@Component({
selector: 'page-foo',
templateUrl: 'foo.html'
})
export class FooPage {

constructor(public navCtrl: NavController) {
new Movilizer().readGlobalVariable("myGlobalVariable", (result) => {
console.log('readGlobalVariable Success: ' + result);
}, () => {
console.log('readGlobalVariable Failure!');
});
}

}

我正在像这样测试应用程序:

$ ionic serve

这会立即崩溃并显示以下错误消息:

EXCEPTION: Error in ./FooPage class FooPage_Host - inline template:0:0 caused by: __WEBPACK_IMPORTED_MODULE_2__plugins_Movilizer___default.a is not a constructor
ErrorHandler.prototype.handleError
_callAndReportToErrorHandler/<
sg</d</t.prototype.invoke
NgZone.prototype.forkInnerZoneWithAngularBehavior/this.inner<.onInvoke
sg</d</t.prototype.invoke
sg</v</e.prototype.run
h/<
sg</d</t.prototype.invokeTask
NgZone.prototype.forkInnerZoneWithAngularBehavior/this.inner<.onInvokeTask
sg</d</t.prototype.invokeTask
sg</v</e.prototype.runTask
i
mh/</u
mh/<
Vl/r

我的问题
如何在 TypeScript 文件中使用 Movilizer.js 文件?如果我需要 .d.ts 文件,如何创建它?

最佳答案

我注意到没有export代码为Movilizer.js 。所以,它不是一个模块。那么,你就不能import它。

您可以将其加载到浏览器中,不是作为模块,而是作为脚本(例如,不是在 Webpack 中,而是使用标记 <script> )。那么它将作为全局变量存在。在 TypeScript 中,我们可以预期文件 Movilizer/index.d.ts声明全局变量。因此,您可以直接使用它。

相关:

关于javascript - 单个 JavaScript 文件的 TypeScript 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40886232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com