gpt4 book ai didi

typescript - Angular2/typescript 和 SSE (EventSource)

转载 作者:太空狗 更新时间:2023-10-29 17:31:48 25 4
gpt4 key购买 nike

首先,我对 ng2 和 typescript 还很陌生。

我试图完成的是在 Angular2 组件中实现 Server-Sent 事件。我已经按照此处早期帖子中提到的示例进行操作,但我的问题是无法识别“EventSource”对象(红色下划线,在 VS 代码中)。

我不确定我是否遗漏了一些引用资料......我的引用资料是:

<!-- IE required polyfills, in this exact order -->
<script src="node_modules/es6-shim/es6-shim.min.js"></script>
<script src="node_modules/systemjs/dist/system-polyfills.js"></script>
<script src="node_modules/angular2/es6/dev/src/testing/shims_for_IE.js"></script>
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>

这就是我实现事件源客户端的方式:

   ngOnInit() {
const observable = Observable.create(observer => {
const eventSource = new EventSource(/API_URL); //Cannot find EventSource
eventSource.onmessage = x => observer.next(x.data);
eventSource.onerror = x => observer.error(x);

return () => {
eventSource.close();
};
});

observable.subscribe({
next: guid => {
this.zone.run(() => this.someStrings.push(guid));
},
error: err => console.error('something wrong occurred: ' + err)
});

最佳答案

其实在TypeScript中有两件事:

  • 编译时间。编译器检查语法错误和类型。关于类型,它依赖于 d.ts 文件,这些文件可以在描述对象/类契约的文件中看到。
  • 执行时间。如果对象出现在您的执行环境中,代码将被执行。

在您的情况下,问题出在编译时。

这是 EventSource 的 d.ts 文件示例:https://github.com/sbergot/orgmodeserver/blob/master/src/ts/deps/EventSource.d.ts

您可以通过这种方式在您的 TypeScript 文件的开头获取并引用它:

/// <reference path="../<path-to>EventSource.d.ts"/>

关于typescript - Angular2/typescript 和 SSE (EventSource),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37003459/

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