类型 'BehaviorSubject<false>' 不可分配给类型 'BehaviorSubject<boolean>'
Type 'BehaviorSubject<false>' is not assignable to type 'BehaviorSubject<boolean>'
我的其中一个组件中有这个:
public booleanSubject: BehaviorSubject<boolean> = new BehaviorSubject(false);
当我将 "strictFunctionTypes": true
添加到 tsconfig.json
文件时,出现以下错误:
× 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
来避免抛出错误?
通常,当我创建一个 BehaviorSubject 时,我只是在初始化它时为其分配一个类型。试试这样:
public booleanSubject = new BehaviorSubject<boolean>(false);
这样做会将 BehaviorSubject 类型初始化为布尔值,我相信错误会消失。
Igor Melo Telheiro 回答正确。稍微扩展一下。
您可以使用 public booleanSubject = new BehaviorSubject(false);
声明该字段
它会自动推断出正确的类型 BehaviorSubject<boolean>
或者您可以使用类型声明字段,但分配的值在声明时也必须是该类型。
public booleanSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false)
;
原因是您将变量 booleanSubject
分配为布尔值,但 new BehaviorSubject(false)
的输出类型为 false
而不是类型 boolean
.
public booleanSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
将输出 BehaviorSubject<boolean>
而不是 BehaviorSubject<false>
并修复 typescript 错误。
这通常是因为 TSConfig stict
-> 更准确地说 strictFunctionTypes: true
我的其中一个组件中有这个:
public booleanSubject: BehaviorSubject<boolean> = new BehaviorSubject(false);
当我将 "strictFunctionTypes": true
添加到 tsconfig.json
文件时,出现以下错误:
× 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
来避免抛出错误?
通常,当我创建一个 BehaviorSubject 时,我只是在初始化它时为其分配一个类型。试试这样:
public booleanSubject = new BehaviorSubject<boolean>(false);
这样做会将 BehaviorSubject 类型初始化为布尔值,我相信错误会消失。
Igor Melo Telheiro 回答正确。稍微扩展一下。
您可以使用 public booleanSubject = new BehaviorSubject(false);
声明该字段
它会自动推断出正确的类型 BehaviorSubject<boolean>
或者您可以使用类型声明字段,但分配的值在声明时也必须是该类型。
public booleanSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false)
;
原因是您将变量 booleanSubject
分配为布尔值,但 new BehaviorSubject(false)
的输出类型为 false
而不是类型 boolean
.
public booleanSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
将输出 BehaviorSubject<boolean>
而不是 BehaviorSubject<false>
并修复 typescript 错误。
这通常是因为 TSConfig stict
-> 更准确地说 strictFunctionTypes: true