如何实现TypeScript中索引类型的递归定义并去除可选修饰符?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1652个文字,预计阅读时间需要7分钟。
目录前言总结前言这两天遇到了一个TS的问题,跑来问问大家。问题问题是这样的:有一个interface,想取出userInfo的类型来:typescriptinterface Result { data?: { userInfo?: { name: string; }; };}他是这样取的:
目录
- 前言
- 总结
前言
这两天东东遇到一个 TS 的问题,跑来问我。
问题是这样的:
这样一个 interface,想取出 userInfo 的类型来:
interface Result{ data?: { userInfo?: { name: string; } } }
他是这样取的:
type userInfo = Result['data']['userInfo'];
但是会报错:
说是 userInfo 不在这个联合类型上。
这很正常,因为可选索引的含义就是值和 undefined 的联合类型 value | undefined。
于是他问我应该怎么取?
我和他说这个问题有两种不同复杂度的解决方案,有简单的有复杂的,问他想听哪个。
本文共计1652个文字,预计阅读时间需要7分钟。
目录前言总结前言这两天遇到了一个TS的问题,跑来问问大家。问题问题是这样的:有一个interface,想取出userInfo的类型来:typescriptinterface Result { data?: { userInfo?: { name: string; }; };}他是这样取的:
目录
- 前言
- 总结
前言
这两天东东遇到一个 TS 的问题,跑来问我。
问题是这样的:
这样一个 interface,想取出 userInfo 的类型来:
interface Result{ data?: { userInfo?: { name: string; } } }
他是这样取的:
type userInfo = Result['data']['userInfo'];
但是会报错:
说是 userInfo 不在这个联合类型上。
这很正常,因为可选索引的含义就是值和 undefined 的联合类型 value | undefined。
于是他问我应该怎么取?
我和他说这个问题有两种不同复杂度的解决方案,有简单的有复杂的,问他想听哪个。

