Angular 2 - 打字稿:TS2322:类型 'Subscription' 不可分配给类型 'Observable<MouseEvent>'
Angular 2 - Typescript: TS2322: Type 'Subscription' is not assignable to type 'Observable<MouseEvent>'
我正在使用这个 plunk 中的 click-outside 指令 --> http://embed.plnkr.co/v7BMUv/
我的 TS 编译器抛出以下错误:
TS2322:类型 'Subscription' 不可分配给类型 'Observable'。
属性 'Subscription' 类型中缺少“_isScalar”。
TS2339 属性 'unsubscribe' 在类型 'Observable' 上不存在。
我的tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"target": "es6",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"suppressImplicitAnyIndexErrors": true,
"noImplicitAny": false,
"noEmitOnError": false
},
"exclude": [
"node_modules",
"wwwroot"
]
}
导致错误的代码:
ngOnInit() {
this.globalClick = Observable
.fromEvent(document, 'click')
.delay(1)
.do(() => {
this.listening = true;
}).subscribe((event:MouseEvent) => {
this.onGlobalClick(event);
});
}
如何克服这个错误?
错误在 click-outside.directive.ts
。 Observable.subscribe
returns 一个 Subscription
(在 ngOnInit
中),而不是另一个 Observable
。因此,private globalClick
的类型应该是 Subscription
.
它在类型被删除时工作,并且由于 plunker 不显示类型错误它工作,但是当使用 tsc
编译时它会出错,因为你试图分配一个 Subscription
反对 Observable
.
我正在使用这个 plunk 中的 click-outside 指令 --> http://embed.plnkr.co/v7BMUv/
我的 TS 编译器抛出以下错误:
TS2322:类型 'Subscription' 不可分配给类型 'Observable'。 属性 'Subscription' 类型中缺少“_isScalar”。
TS2339 属性 'unsubscribe' 在类型 'Observable' 上不存在。
我的tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"target": "es6",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"suppressImplicitAnyIndexErrors": true,
"noImplicitAny": false,
"noEmitOnError": false
},
"exclude": [
"node_modules",
"wwwroot"
]
}
导致错误的代码:
ngOnInit() {
this.globalClick = Observable
.fromEvent(document, 'click')
.delay(1)
.do(() => {
this.listening = true;
}).subscribe((event:MouseEvent) => {
this.onGlobalClick(event);
});
}
如何克服这个错误?
错误在 click-outside.directive.ts
。 Observable.subscribe
returns 一个 Subscription
(在 ngOnInit
中),而不是另一个 Observable
。因此,private globalClick
的类型应该是 Subscription
.
它在类型被删除时工作,并且由于 plunker 不显示类型错误它工作,但是当使用 tsc
编译时它会出错,因为你试图分配一个 Subscription
反对 Observable
.