【发布时间】:2021-12-19 15:32:58
【问题描述】:
我正在尝试创建一个仅接受 AvailableLanguages 枚举值的 BehaviorSubject,但由于某种原因编译器不同意我的代码。 你能告诉我为什么吗?
我正在使用 Angular 12.2.10。
这里是服务:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
export enum AvailableLanguages {
EN = "en-US",
IT = "it-IT"
}
@Injectable({
providedIn: 'root'
})
export class UserService {
_selectedLanguage$: BehaviorSubject<AvailableLanguages> = new BehaviorSubject(AvailableLanguages.EN);
constructor() { }
}
这是编译器的错误:
Error: src/app/services/user.service.ts:15:3 - error TS2322: Type 'BehaviorSubject<AvailableLanguages.EN>' is not assignable to type 'BehaviorSubject<AvailableLanguages>'.
Types of property 'observers' are incompatible.
Type 'Observer<AvailableLanguages.EN>[]' is not assignable to type 'Observer<AvailableLanguages>[]'.
Type 'Observer<AvailableLanguages.EN>' is not assignable to type 'Observer<AvailableLanguages>'.
Type 'AvailableLanguages' is not assignable to type 'AvailableLanguages.EN'.
15 _selectedLanguage$: BehaviorSubject<AvailableLanguages> = new BehaviorSubject(AvailableLanguages.EN);
~~~~~~~~~~~~~~~~~~
× Failed to compile.
【问题讨论】:
标签: typing rxjs-observables angular12 typescript4.0