forked from cartant/eslint-plugin-rxjs
-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Labels
enhancementNew feature or requestNew feature or request
Description
The satisfies
operator was added in TypeScript 4.9. Some rules need to handle TSSatisfiesExpression
or else satisfies
can cause false negatives.
For example, these do not cause errors:
// no-async-subscribe
of(42).subscribe((async () => {}) satisfies Function);
// no-floating-observables
of(42) satisfies Observable<number>;
// no-ignored-subscription
of(42).subscribe() satisfies Subscription;
// no-ignored-subscribe
of(42).subscribe({} satisfies Partial<Observer<number>>);
// no-ignored-takewhile-value
let flag = true;
const whilst = of(42).pipe(takeWhile((() => flag) satisfies Function));
// no-implicit-any-catch
throwError(() => new Error('Kaboom!')).pipe(
catchError((error => {
console.error(error);
return of('Error occurred');
}) satisfies (error: any) => ObservableInput<any>),
);
// no-misused-observables
[1, 2, 3].forEach((i => of(i)) satisfies (i: number) => Observable<number>);
// no-redundant-notify
const subject$ = new Subject<number>();
subject$.next(42);
subject$.error(new Error('Kaboom!'));
subject$.complete() satisfies void;
// no-sharereplay - this one does trigger, but with the wrong message (forbiddenWithoutConfig)
const shared$ = of(42).pipe(
shareReplay({ refCount: true } satisfies ShareReplayConfig),
);
// no-unsafe-takeuntil
const notifier = new Subject<void>();
const b = of(42);
of(42)
.pipe(
takeUntil(notifier) satisfies OperatorFunction<number, number>,
combineLatestWith(b),
)
.subscribe((value) => { console.log(value); });
I discovered this after stumbling upon francoismassart/eslint-plugin-tailwindcss#396
devfservant
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request