如何从Aurelia商店订阅方法导入Typescript订阅类型?

时间:2018-09-19 14:17:35

标签: typescript aurelia aurelia-store

我正在关注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:类型   “导入(“ project / node_modules / aurelia-store / node_modules / rxjs / internal / Subscription”)。订阅   不可分配给类型   'import(“ project / node_modules / rxjs / internal / Subscription”)。Subscription'。   属性“ _parent”受保护,但类型“ Subscription”不是类   源自“订阅”。

1 个答案:

答案 0 :(得分:1)

所以,我不确定为什么这行得通,但是我在回答自己的问题,以防其他人遇到此问题。

  1. 我卸载了rxjs
  2. 我重新安装了rxjs
  3. 我删除了node_modules文件夹
  4. 我删除了package-lock.json
  5. 我跑了npm clean cache --force
  6. 我跑了npm install

然后一切又开始工作了:)