在下面的示例中,VS Code 1.77.3和TypeScript 5.0.4似乎没有选择@deprecated
标记,我不明白为什么?用例是将lodash template
函数标记为已弃用。
- t1.ts:**
import _template from 'lodash/template'; // eslint-disable-line @typescript-eslint/no-restricted-imports
export {
/** @deprecated Deprecated. Use JavaScript template string instead. */
_template as template
};
/** @deprecated Deprecated. */
export const func = (): void => {};
- t2.ts:**
import * as _ from './t1';
_.template('');
_.func();
还请注意,当使用_.template
函数时,VS Code正确地将template
函数标记为已弃用,并在帮助弹出窗口中显示附加注解。
当函数完成时,它似乎忘记了它已被弃用,不再显示它已被划掉。
2条答案
按热度按时间wqsoz72f1#
好的。现在你已经展示了如何使用该函数的信息,我想我明白是怎么回事了。(故事寓意:保存每个人的时间,总是从提供MRE开始)。
当您使用覆盖的文档重新导出时,覆盖的文档将仅在您 * 从重新导出导入 * 时显示-而不是从原始导出导入时。
详细说明原因:
请参阅Override JSDoc for re-exported types / enum / classes / interfaces #42684,其中要求覆盖JSDocs以进行再导出的一般功能,后来在feat(42684): Override JSDoc for re-exported types / enum / classes / interfaces #47293中实现。该PR合并到TypeScript的主分支发生在2022年1月25日。虽然问题单和PR没有相关的里程碑,但这只是在TypeScript 4.6 Beta发布之前的一段时间。因此,如果TypeScript 4.6或4.7中有此功能,我不会感到惊讶。
在撰写本文时,VS Code捆绑的TypeScript(默认情况下用于IntelliSense)已经是TypeScript 5.0版本。
奇怪的是,我注意到这个功能的实现似乎并不允许完全覆盖文档。文档在重新导出的站点被覆盖,但在从重新导出导入的站点却没有被覆盖,除了添加了
@deprecated
标签,这对我来说似乎是一个bug。为了您的参考/学习目的,此信息是通过谷歌搜索“
github typescript issues mark reexport as deprecated
”找到的。lvmkulzt2#
请试试