typescript - 如何递归解析类型?
问题描述
以下类型定义存在一些问题。
type Check<T> = (value: any) => value is T;
type Static<T> = T extends Check<infer U> ? U : never;
type Interface<T extends { [index: string]: Check<any> }> = Check<{ [P in keyof T]: Static<T[P]> }>;
type IPlayer = Static<
Interface<{
name: Check<string>;
data: Interface<{
score: Check<number>;
}>;
}>
>;
使用 TypeScript 3.1.1,如果我将鼠标悬停IPlayer
在 VS Code 中,它会将类型解析为:
type IPlayer = {
name: string;
data: any;
}
但是,我希望它解决:
type IPlayer = {
name: string;
data: {
score: number;
};
}
如何更改我的类型定义以使其正常工作?
解决方案
推荐阅读
- wpf - 将双击命令添加到 wpf-treeview-items
- performance - 性能问题:使用 Gunicorn + Tornado 的异步 gRPC
- android - 我怎样才能膨胀 ArrayList
> 对 RecyclerView 的价值 - highcharts - Highcharts点击功能更新系列并取消之前的更新
- javascript - 如何使按钮在网页上显示表单
- scala - 无法从 hdp 3 中超过 25 列的 spark 数据帧加载配置单元表
- angular - 如何提高 Rxjs 的表达?
- shell - 使用 shell 脚本迭代地图的 groovy 地图
- java - RecylerView 没有出现在片段中
- python - 遍历python中的列表抛出错误