javascript 类型的条件链接运算符无效

knpiaxh1  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(95)

我需要从对象中提取一个类型,其中每个字段都可以是未定义的。但是,当我尝试使用条件链接运算符时,它抛出错误

我如何才能做到这一点?
范例:

type a = { one?: { two?: { three: string } } };
type threeType = a['one']?.['two']?.['three'];

它给出了错误,即使在ts playgound与最后一个版本的 typescript
我尝试使用条件链接运算符,但似乎不起作用。

q3aa0525

q3aa05251#

如果您禁用了strictNullChecks,则不会出现编译器错误。

type A = {one?: {two?: {three: string}}};
type ThreeType = A["one"]["two"]["three"];
// type ThreeType = string;

启用strictNullChecks后,您可以使用NonNullable实用程序类型执行此操作。

type A = {one?: {two?: {three: string}}};
type ThreeType = NonNullable<NonNullable<NonNullable<A['one']>>['two']>['three'];
// type ThreeType = string;

相关问题