typescript - 对函数的泛型返回类型进行比较
问题描述
我正在尝试获取有关传递给函数或类的泛型类型的信息,以便我可以在其他地方对其执行一些逻辑。我想要取决于函数的返回类型的特定行为,但我不知道如何检查这一点。
假设我有这个简单的对象:
interface MyObj<T> {
fn: (obj: T) => T;
}
const obj: MyObj<number> = { fn: (obj: number): number => 4 };
我可以通过执行以下操作获得返回类型:
类型 myType = ReturnType;
然后我希望能够做到:
if (myType === "number") { // 'myType' only refers to a type, but is being used as a value here. ts(2693)
doSomething();
}
我怎样才能做到这一点?
解决方案
你不能做这个。
YourmyType
是类型检查器在编译时使用的类型注释。然后它被“编译掉”并且在运行时不存在。因此,您无法对其进行运行时检查。
您可以针对具体值执行运行时类型断言。
const value = obj.fn(0);
if (typeof value === 'number') {
doSometing();
}
推荐阅读
- visual-studio-code - 如何不在 VS Code 侧边栏中对文件夹和文件进行分组,而是按字母顺序排列所有内容?
- python-3.x - 除零除错误外无法使用 try
- flutter - 是否可以在 NotificationListener 中检测 ScrollNotification 的来源
- angular - Angular 多个 .subscribe 用于
- assets - zipline:如何找到符号的 sid,例如“AAPL”
- c# - 使用 dot.net 客户端 SolaceSystems.Solclient.Messaging 缺少 libcrypto-1_1-x64.dll
- c# - 在同步代码中等待输入而不阻塞的最佳方法
- ruby - 红宝石:在heroku上使用credentials.yml.enc?
- mongodb - 查询 MongoDb 聚合连接两个集合
- laravel - Laravel - 在单个请求中处理大量小数据条目,总执行时间超过 2 分钟