typescript - 如何从 Aurelia Store 订阅方法导入 Typescript 订阅类型?
问题描述
我正在关注Aurelia Store的文档,了解如何订阅商店更改流。当我从中导入打字稿Subscription
类型时,rxjs
我收到打字稿编译错误:
TS2322: Type 'import("project\node_modules\aurelia-store\node_modules\rxjs\internal\Subscription") is not assignable to type import("project\node_modules\rxjs\internal\Subscription")
代码示例:
// app.ts
import { autoinject } from "aurelia-dependency-injection";
import { Store } from "aurelia-store";
import { Subscription } from 'rxjs';
import { State } from "./state";
@autoinject()
export class App {
public state: State;
private subscription: Subscription;
constructor(private store: Store<State>) {}
bind() {
this.subscription = this.store.state.subscribe(
(state) => this.state = state
);
}
unbind() {
this.subscription.unsubscribe();
}
}
我试过这样做import { Store, Subscription } from 'aurelia-store'
,但这也不起作用。
编辑:
回答 Pierre-Luc Champigny 的问题:
您的 rxjs 版本(来自 Aurelia 和您安装的 rxjs)是否相同?
因此,aurelia-store/package.json 的 rxjs 版本为“^6.2.2”,而我的项目 package.json 为“6.3.2”。所以,我卸载了我的 rxjs 版本并安装了 6.2.2 版本。现在打字稿给出了这个错误信息:
TS2322:类型 'import("project/node_modules/aurelia-store/node_modules/rxjs/internal/Subscription").Subscription' 不可分配给类型 'import("project/node_modules/rxjs/internal/Subscription").Subscription' . 属性“_parent”受保护,但类型“订阅”不是从“订阅”派生的类。
解决方案
所以,我不确定为什么会这样,但我正在回答我自己的问题,以防其他人遇到这个问题。
- 我卸载了 rxjs
- 我重新安装了 rxjs
- 我删除了我的
node_modules
文件夹 - 我删除了我的 package-lock.json
- 我跑了
npm clean cache --force
- 我跑了
npm install
然后一切又开始工作了:)
推荐阅读
- api - Google OAuth 同意屏幕未显示范围选项
- bash - 是否可以在 bash 中创建复合别名?
- ios - 如何在手表应用程序上访问 PFUser.Current()
- javascript - 如何为单页应用程序重新排列 div
- python - Python gTTS 说话剪贴板
- three.js - 如何有效地旋转 IBL 管道中使用的环境贴图?
- c# - 使用 CURL 发送到 Azure Function 的 Newtonsoft 反序列化 JSON 的异常
- javascript - 使用 D3.js 使用不是 URL 的 base64 jpeg 图像填充节点圆
- vba - 基于列的 VBA VookUP 复制粘贴
- string - 从具有完全限定域名地址的列表中提取子级域?