我把这个放在我的部件中:
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来避免引发错误?
发布于 2021-03-19 18:27:25
伊戈尔·梅洛·泰莱罗的回答就在这里。只是想把它扩大一点。
您可以用public booleanSubject = new BehaviorSubject(false);声明该字段,它将自动推断出正确的BehaviorSubject<boolean>类型。
或者,您可以使用类型声明字段,但在声明时,赋值也必须是该类型。public booleanSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
发布于 2021-03-19 15:33:57
通常,当我创建一个BehaviorSubject时,我只是在初始化它时给它分配一个类型。试着这样做:
public booleanSubject = new BehaviorSubject<boolean>(false);这样做,它将初始化BehaviorSubject类型为布尔型,我相信错误会消失。
发布于 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。
https://stackoverflow.com/questions/66710843
复制相似问题