ruo*_*ola 9 typescript nullability
我正在尝试根据另一种类型定义 TypeScript 类型。
这有效:
type Result = { data: { nestedData: { foo: string; bar: string } } };
type NestedData = Result['data']['nestedData'];
Run Code Online (Sandbox Code Playgroud)
但是,当data属性可为空时,这不起作用:
type Result = { data: { nestedData: { foo: string; bar: string } } | null };
type NestedData = Result['data']['nestedData'];
Run Code Online (Sandbox Code Playgroud)
并导致错误:
Run Code Online (Sandbox Code Playgroud)type Result = { data: { nestedData: { foo: string; bar: string } } }; type NestedData = Result['data']['nestedData'];
如何根据 定义我的NestedData类型,而不重复 的类型Result的任何部分?Result
编辑:我NestedData从代码生成工具获取类型,并将其定义NestedData为较短的类型别名。事实上,打字时间较长,所以我想尽量减少重复。
您可以使用NonNullable从联合中删除null( 和):undefined
type NestedData = NonNullable<Result['data']>['nestedData']
Run Code Online (Sandbox Code Playgroud)
等效地,但更详细一点,您可以使用Exclude:
type NestedData = Exclude<Result['data'], null>['nestedData']
Run Code Online (Sandbox Code Playgroud)
Result当您由于某种原因无法更改类型时,采用其中一种方法是有意义的。在其他情况下,这样定义它们会更自然:
type NestedData = { foo: string; bar: string }
type Result = { data: { nestedData: NestedData } | null }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1409 次 |
| 最近记录: |