import-js/eslint-plugin-import

False positive import/no-deprecated for typescript overloads

Open

#1,532 建立於 2019年11月2日

在 GitHub 查看
 (13 留言) (18 反應) (0 負責人)JavaScript (4,946 star) (1,540 fork)batch import
bughelp wantedtypescript

描述

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..."

貢獻者指南

False positive import/no-deprecated for typescript overloads · import-js/eslint-plugin-import#1532 | Good First Issue