如何将可选索引类型递归改写为非可选且无递归的长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1665个文字,预计阅读时间需要7分钟。
目录前言总结前言最近遇到一个TS的问题,跑来请教一下。问题这个问题是这样的:有一个interface,想获取userInfo的类型来获取name。
接口定义如下:interface Result { data?: { userInfo?: { name: string; }; };}
他是这样取的:总结
目录
- 前言
- 总结
前言
这两天东东遇到一个 TS 的问题,跑来问我。
问题是这样的:
这样一个 interface,想取出 userInfo 的类型来:
interface Result{ data?: { userInfo?: { name: string; } } }
他是这样取的:
type userInfo = Result['data']['userInfo'];
但是会报错:
说是 userInfo 不在这个联合类型上。
这很正常,因为可选索引的含义就是值和 undefined 的联合类型 value | undefined。
于是他问我应该怎么取?
我和他说这个问题有两种不同复杂度的解决方案,有简单的有复杂的,问他想听哪个。
本文共计1665个文字,预计阅读时间需要7分钟。
目录前言总结前言最近遇到一个TS的问题,跑来请教一下。问题这个问题是这样的:有一个interface,想获取userInfo的类型来获取name。
接口定义如下:interface Result { data?: { userInfo?: { name: string; }; };}
他是这样取的:总结
目录
- 前言
- 总结
前言
这两天东东遇到一个 TS 的问题,跑来问我。
问题是这样的:
这样一个 interface,想取出 userInfo 的类型来:
interface Result{ data?: { userInfo?: { name: string; } } }
他是这样取的:
type userInfo = Result['data']['userInfo'];
但是会报错:
说是 userInfo 不在这个联合类型上。
这很正常,因为可选索引的含义就是值和 undefined 的联合类型 value | undefined。
于是他问我应该怎么取?
我和他说这个问题有两种不同复杂度的解决方案,有简单的有复杂的,问他想听哪个。

