Typescript 自定义RxJS筛选器运算符中的非Null类型保护
如何在自定义RxJS操作符中实现不可为null的类型保护?下一个代码Typescript 自定义RxJS筛选器运算符中的非Null类型保护,typescript,rxjs,Typescript,Rxjs,如何在自定义RxJS操作符中实现不可为null的类型保护?下一个代码 export const filterNil=()=>(源代码:Observable):Observable=>source.pipe( 筛选器((值:T):值不可为null=>value!==null&&value!==undefined), ); 抛出ts错误: TS2345: Argument of type 'MonoTypeOperatorFunction<T>' is not assignable t
export const filterNil=()=>(源代码:Observable):Observable=>source.pipe(
筛选器((值:T):值不可为null=>value!==null&&value!==undefined),
);
抛出ts错误:
TS2345: Argument of type 'MonoTypeOperatorFunction<T>' is not assignable to parameter of type 'OperatorFunction<T | null | undefined, T>'.
Types of parameters 'source' and 'source' are incompatible.
Type 'Observable<T | null | undefined>' is not assignable to type 'Observable<T>'.
Type 'T | null | undefined' is not assignable to type 'T'.
Type 'undefined' is not assignable to type 'T'.
TS2345:类型为“MonoTypeOperatorFunction”的参数不能分配给类型为“OperatorFunction”的参数。
参数“源”和“源”的类型不兼容。
类型“Observable”不可分配给类型“Observable”。
类型“T | null | undefined”不可分配给类型“T”。
类型“未定义”不可分配给类型“T”。
我使用下一个代码解决了一个问题:
export const filterNil = <T>() => (source: Observable<T>): Observable<NonNullable<T>> => source.pipe(
filter<T, NonNullable<T>>((value: T): value is NonNullable<T> => value !== null && value !== undefined),
);
export const filterNil=()=>(源代码:Observable):Observable=>source.pipe(
筛选器((值:T):值不可为null=>value!==null&&value!==undefined),
);
我使用下一个代码解决了一个问题:
export const filterNil = <T>() => (source: Observable<T>): Observable<NonNullable<T>> => source.pipe(
filter<T, NonNullable<T>>((value: T): value is NonNullable<T> => value !== null && value !== undefined),
);
export const filterNil=()=>(源代码:Observable):Observable=>source.pipe(
筛选器((值:T):值不可为null=>value!==null&&value!==undefined),
);
在这种情况下,我喜欢使用source.pipe(switchMap(value=>value!==undefined?of(value):EMPTY))
,它处理类型而不需要自定义运算符。在这种情况下,我喜欢使用source.pipe(switchMap(value=>value!==undefined?of(value):EMPTY))
,它处理类型而不需要自定义运算符。