首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >键入'BehaviorSubject<false>‘不能指定键入'BehaviorSubject<boolean>’

键入'BehaviorSubject<false>‘不能指定键入'BehaviorSubject<boolean>’
EN

Stack Overflow用户
提问于 2021-03-19 15:16:14
回答 3查看 4K关注 0票数 12

我把这个放在我的部件中:

代码语言:javascript
复制
public booleanSubject: BehaviorSubject<boolean> = new BehaviorSubject(false);

当我将"strictFunctionTypes": true添加到tsconfig.json文件时,会得到以下错误:

代码语言:javascript
复制
× Compiling TypeScript sources through NGC
ERROR: path/to/my/component.component.ts:28:10 - error TS2322: Type 'BehaviorSubject<false>' is not assignable to type 'BehaviorSubject<boolean>'.
  Types of property 'observers' are incompatible.
    Type 'Observer<false>[]' is not assignable to type 'Observer<boolean>[]'.
      Type 'Observer<false>' is not assignable to type 'Observer<boolean>'.
        Type 'boolean' is not assignable to type 'false'.

28   public booleanSubject: BehaviorSubject<boolean> = new BehaviorSubject(false);

是否有人知道原因,以及如何通过将strictFunctionTypes标志设置为true来避免引发错误?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-19 18:27:25

伊戈尔·梅洛·泰莱罗的回答就在这里。只是想把它扩大一点。

您可以用public booleanSubject = new BehaviorSubject(false);声明该字段,它将自动推断出正确的BehaviorSubject<boolean>类型。

或者,您可以使用类型声明字段,但在声明时,赋值也必须是该类型。public booleanSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false)

票数 3
EN

Stack Overflow用户

发布于 2021-03-19 15:33:57

通常,当我创建一个BehaviorSubject时,我只是在初始化它时给它分配一个类型。试着这样做:

代码语言:javascript
复制
public booleanSubject = new BehaviorSubject<boolean>(false);

这样做,它将初始化BehaviorSubject类型为布尔型,我相信错误会消失。

票数 13
EN

Stack Overflow用户

发布于 2022-03-16 12:31:53

原因是您将变量booleanSubject赋值为布尔值,但是new BehaviorSubject(false)的输出是false类型,而不是boolean类型。

public booleanSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);

将输出一个BehaviorSubject<boolean>而不是BehaviorSubject<false>,并修复类型记录错误。

这通常是因为TSConfig stict ->更准确地说是strictFunctionTypes: true

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66710843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档