我知道可以将整个属性注解为deprecated,但是是否可以将字符串联合中的一个(或多个)单个值注解为deprecated?
例如,给定以下类型声明:
export type BoxProps = HTMLAttributes<HTMLDivElement> & {
/**
* @deprecated rounded has no effect and will be removed in a future version
*/
rounded?: boolean;
variant?:
| 'neutral'
| 'grey'
| 'success'
| 'warning';
thickBorder?: boolean;
};
...我的IDE(VS代码)将警告我rounded
参数已弃用,并将其显示为“已删除”。
但是,如果我尝试注解variant
字符串文字联合类型的单个值,IDE将建议所有可能的选项,而不会显示警告或视觉处理,以指示任何字符串已弃用:
TypeScript
export type BoxProps = HTMLAttributes<HTMLDivElement> & {
/**
* @deprecated rounded has no effect and will be removed in a future version
*/
rounded?: boolean;
variant?:
| 'neutral'
/** @deprecated */
| 'grey'
| 'success'
| 'warning';
thickBorder?: boolean;
// or
TypeScript
export type BoxProps = HTMLAttributes<HTMLDivElement> & {
/**
* @deprecated rounded has no effect and will be removed in a future version
*/
rounded?: boolean;
variant?:
| 'neutral'
| 'grey' /** @deprecated */
| 'success'
| 'warning';
thickBorder?: boolean;
};
// or
TypeScript
export type BoxProps = HTMLAttributes<HTMLDivElement> & {
/**
* @deprecated rounded has no effect and will be removed in a future version
*/
rounded?: boolean;
variant?:
| 'neutral'
| /** @deprecated */ 'grey'
| 'success'
| 'warning';
thickBorder?: boolean;
};
这是不可能的吗?或者需要使用其他语法来注解单个字符串为已弃用?(或者我缺少VS代码插件吗?)
3条答案
按热度按时间xurqigkl1#
@depecated
支持已随TS 4.0 in 2020一起提供。在the ticket上对此进行了讨论,但目前没有联合和插入类型成员不支持TSDoc。
flvtvl502#
我不认为这是可能的TSDoc在Visual Studio代码。我已经尝试过在我的IDE(Visual Studio代码),没有成功。
然而,GitHub的一个问题是关于函数参数的相同问题。即使它不是联合类型,它可能会有一点帮助。
czq61nw13#
我也在尝试做同样的事情,并通过创建一个更高级别的联盟(不确定该模式的“正式名称”)取得了一些成功,如下所示:
这是所有未弃用属性的完整类型
这是您将应用于Box组件的类型,方法是创建原始类型的组合,然后创建一个非常窄的类型,该类型仅包含您要弃用的嵌套联合中的值。
我可能有我的VS代码配置错误,因为我没有看到一个错误,但我看到了弃用通知时,悬停的 prop 。