import-js/eslint-plugin-import
False positive import/no-deprecated for typescript overloads
Aperta
#1532 aperta il 2 nov 2019
bughelp wantedtypescript
Metriche repository
- Star
- (5940 stelle)
- Metriche merge PR
- (Merge medio 138g 22h) (3 PR mergiate in 30 g)
Descrizione
Consider this external library I'm consuming:
export declare function doSomethingWith(items: string[]): string;
/** @deprecated Pass arguments in a single array instead `doSomethingWith([a, b, c])` */
export declare function doSomethingWith(...items: string[]): string;
The import/no-deprecated rule currently flags even the proper usages:
import { doSomethingWith } from 'external-library'; // flagged
doSomethingWith('a', 'b', 'c'); // flagged, rightly so
doSomethingWith(['a', 'b', 'c']); // flagged, wrongly so
TSLint's deprecation rule gets it right (not bashing ESLint here at all, just pointing to a working implementation).
Additionally, in the following case:
export declare function doSomethingWith(items: string[]): string;
/** @deprecated Pass arguments in a single array instead `doSomethingWith([a, b, c])` */
export declare function doSomethingWith(...items: string[]): string;
/** @deprecated Please don't use this method anymore, it's actually gonna blow everything up */
export declare function doSomethingWith(unused: number, ...items: string): string;
The deprecation warning displayed is that of the last overloaded method (AFAICT), and it may not make sense.
import { doSomethingWith } from 'external-library'; // "Please don't use this method anymore..."
doSomethingWith('a', 'b', 'c'); // "Please don't use this method anymore..."
doSomethingWith(['a', 'b', 'c']); // "Please don't use this method anymore..."