【发布时间】:2021-12-08 18:08:51
【问题描述】:
我正在 TypeScript 中创建一个函数,它本质上扩展了 typeof 关键字的功能,包括在已知类型时显示适当的 IntelliSense(通过条件类型)。我的所有其他自定义类型都可以正常工作,因此它们仅在已知的 1 返回类型中显示 IntelliSense,但我不确定如何使其专门针对 NaN 和 Infinity 值工作。我相信这是因为这些被忽略为“数字”文字类型。 (下面的工作示例)
public static async type(value: number): Promise<'number' | 'nan' | 'infinity'> // would rather this only show just 1 type
public static async type(value: []): Promise<'array'>
public static async type(value: Promise<any>): Promise<'promise'>
// and several more...
public static async type(value: any): Promise<T_detectType> {
// do stuff
}
我的问题:是否可以基于 NaN 和/或 Infinity 创建条件类型? (下面的非工作示例)
public static async type(value: NaN): Promise<'nan'>
public static async type(value: Number.POSITIVE_INFINITY | Number.NEGATIVE_INFINITY): Promise<'infinity'>
我可以根据需要提供更多详细信息,但我不确定您可能需要什么,并且我正在努力使这个问题保持简洁。
【问题讨论】:
-
TypeScript 没有对应于
NaN或Infinity或-Infinity的数字文字类型。在microsoft/TypeScript#15135 中提出建议并拒绝;它偶尔会作为建议提出,但从未实施过。所以没有支持你正在尝试做的事情 -
@jcalz 谢谢!您可以将此添加为答案吗?我想留出一些额外的时间来看看是否有人能想出一个可行的替代方案。但是,我会假设您是完全正确的,如果没有人提供可行的替代方案,我会在明天将其标记为正确答案。
-
@NicholasSummers 没有人会提供可行的替代方案
标签: typescript types nan infinity conditional-types