【发布时间】:2021-12-26 07:06:31
【问题描述】:
我正在使用的 Node.js 包有一个方法,该方法需要一个参数,该参数必须是通过 IntelliSense 可以看到的类型,该类型是使用 typescript 声明定义的,格式如下:
export declare type ArgType = 'A' | 'B' | 'C';
我想依次使用该参数的每个允许值来调用包方法;换句话说,某种形式的东西:
['A','B','C'].forEach((v) => packageObject.packageMethod(v));
除了我想避免硬编码选项列表的静态副本。
【问题讨论】:
-
您希望如何提供选项列表?为什么包裹背后的奥秘是什么?似乎是一个奇怪的用例“使用每个允许的值调用包方法”,这是用于测试还是出于什么目的?
-
这与
typescript有关吗?看起来是这样 - afaik,如果你想以编程方式对类型进行操作,你需要深入研究compiler api。但是,“每个值”通常可能不可行,例如想象一下。number,你必须尝试 2**64 个值。 -
@ASDFGerte 是的,很好推断。如果它真的是一种异国情调的练习,那就太可惜了。在这种情况下,类型选项是对包访问的专有 Web API 使用的不同服务器的引用。我认为 IntelliSense 很容易为我提供作为自动完成的选项选择,因此认为以编程方式访问它们应该是适度可行的。
-
这可能是要学习的新东西,但不是神秘的艺术——它是一个“api”,所以基础工作已经为你完成了。
-
除非模块将它们作为值导出(例如,允许的字符串数组),否则您将不走运,必须自己对列表进行硬编码。 TypeScript 类型信息在运行时不可用。 (除非你使用 the reify-ts package 之类的东西来生成代码)
标签: javascript node.js typescript types