如何将可选索引类型递归改写为非可选且无递归的长尾?

2026-04-02 22:540阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计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。

于是他问我应该怎么取?

我和他说这个问题有两种不同复杂度的解决方案,有简单的有复杂的,问他想听哪个。

阅读全文