[英]Polyfill type definitions not getting picked up
我正在使用 TypeScript 4.4.4 并且我正在尝试在我的前端(React)中使用这个 EventSource polyfill: https://github.com/EventSource/eventsource 。 我还安装了 package 的类型定义。
我特别需要向 SSE 启动添加标题: eventSourceRef.current = new EventSource('/api/foo', { headers: { bar: 'buzz' } });
. 不幸的是,没有选择类型定义。 如果我尝试将headers
作为属性添加到EventSourceInit
选项,TypeScript 会抱怨,这意味着仍在使用EventSource
中烘焙的类型,而不是 polyfill 定义。
我怀疑这可能与 polyfill package 本身不导出 class 有关,所以我无法导入 class。 我必须导入整个 package,如下所示: import 'eventsource/lib/eventsource-polyfill';
我尝试了以下方法:
/// <reference path='../../../../../node_modules/@types/eventsource/index.d.ts'/>
EventSourceInit
接口,如下所示:export {};
declare global {
interface EventSourceInit {
headers?: object | undefined;
}
}
我意识到我总是可以将其转换为 any 或使用 require 导入,但我觉得如果有为此的类型定义,应该可以在我的项目中使用它们。
我在这里想念什么?
编辑:我也尝试了以下方法,但都没有:
import EventSourcePolyfill = require("eventsource/lib/eventsource-polyfill");
. 这不起作用,因为我的目标是 ECMAScript 模块。import EventSourcePolyfill from "eventsource/lib/eventsource-polyfill";
. 但是,当调用构造函数 ( const foo = new EventSourcePolyfill('/foo)
) TypeScript 抱怨表达式不可构造,因为“类型'typeof EventSource'没有构造签名”。叹息……我找到了路。 我开始在表达式中输入EventEmitter
class,我注意到智能感知提示 class 来自 package。 显然,这是导入它的方式:
import EventSource from 'eventsource';
我一直在尝试按照 package README 中的说明导入“eventsource/lib/eventsource-polyfill”:
只需将 example/eventsource-polyfill.js 文件添加到您的 web 页面:
<script src=/eventsource-polyfill.js></script>
我对此感到困惑并尝试导入错误的东西。 但显然只导入 package 索引就足够了。 我想最简单的答案确实是最好的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.