Typescript 从别名泛型中提取类型

Typescript 从别名泛型中提取类型,typescript,types,Typescript,Types,我正在尝试提取泛型的类型,但无法访问它。所以我不能使用提取 从“@expo/vector icons”导入{Feather} //类型如下,但未导出 常量羽毛:图标 // ... 如何获取图标列表枚举? 我正在尝试使用“crosshair”|“database”|“disc”|“zap”… 我也试过这个 type TypeOfFeather=typeof羽毛 type extractGeneric=T扩展TypeOfFeather?X:从来没有 这显然不起作用,因为TypeOfFeather

我正在尝试提取泛型的类型,但无法访问它。所以我不能使用
提取

从“@expo/vector icons”导入{Feather}
//类型如下,但未导出
常量羽毛:图标
// ... 如何获取图标列表枚举?
我正在尝试使用
“crosshair”|“database”|“disc”|“zap”…

我也试过这个

type TypeOfFeather=typeof羽毛
type extractGeneric=T扩展TypeOfFeather?X:从来没有

这显然不起作用,因为
TypeOfFeather
不是泛型。我是Typescript的初学者,所以我真的不知道如何解决这个问题。

在您的示例中,羽毛实际上是一个变量,而您将羽毛作为一个类型来谈论,这让我觉得有点奇怪():

类型图标={
_:T;
};
声明常量羽毛:图标;
//如果Feather实际上是一种类型,而您的示例是错误的,那么只需删除“typeof”。
类型结果=羽毛延伸图标的类型?U:从来没有“a”|“b”

另一方面,如果您提供了包括所有相关类型定义(或其存根)的完全有效的、最少的示例,这将对我们非常有帮助,从而直接对您有益。同样,你没有给出预期的结果(只是一个模糊的描述),这迫使我们猜测/假设你想要做什么;说“我想得到
”a“|”b“
”在这里会一直进行下去。

事实上,我写问题的速度有点太快了,我试图做的确实是从
type TypeOfFeather=typeof Feather
中提取代码,而不是从变量本身。我还改进了你建议的预期结果部分。谢谢你的建议。我认为你的回答很好,但对我来说不起作用。我将尝试找出问题的症结所在改进我的问题问题在于包不导出任何类型(
Icon
或完整列表)。所以我不能做
typeof Feather extensed Icon
也许我只是被卡住了,我应该从
react native vector icons
导入
Icon
(这
@expo
只是简单地包装,而不导出类型…),但这意味着要维护一个更多的依赖关系。不过,从纯理论的角度来看,我仍然对一个可能的答案感兴趣。查看库,您可能还可以使用
keyof Feather['glyphMap']
。您还可以声明一个“带垫片的”
图标
自己键入(TS是结构化的,而不是标称的)。我想除了这些,你的选择越来越少了。事实上,我希望“glyphMap”是可用的,但它没有触发我。。。我的错。所以
typeof-Feather['glyphMap']
键完成了这项工作
type Icon<T> = {
  _: T;
};

declare const Feather: Icon<"a" | "b">;

// If Feather is actually a type and your example was wrong, just drop the "typeof".
type Result = typeof Feather extends Icon<infer U> ? U : never; // "a" | "b"