typescript - TypeScript:如何显示所有类型成员而不是高阶类型
问题描述
我在我的项目中创建了一些映射类型,并且我很确定它们工作正常,但是可以更容易地查看类型显式映射到的内容。
type OptionalKeys<T> = Exclude<
{
[K in keyof T]: T extends Record<K, T[K]> ? never : K;
}[keyof T],
undefined
>;
type RequiredKeys<T> = Exclude<keyof T, OptionalKeys<T>>;
interface Foo {
a: Date;
b?: Date;
}
type StringFoo = (
Partial<Record<OptionalKeys<Foo>, string> &
Record<RequiredKeys<Foo, string>>
);
这很好用,除非当我将鼠标悬停在类型上进行检查时,这就是我所看到的
type StringFoo = Partial<Record<"b", string>> & Record<"a", string>
这有点不透明。有没有办法让它显示为这个?
type StringFoo = {
b?: string;
} & {
a: string;
}
谢谢!
解决方案
使用带有索引签名而不是Record
类型的大括号:
type StringFoo = (
{[key in OptionalKeys<Foo>]?: string} &
{[key in RequiredKeys<Foo>]: string}
);
// {
// b?: string | undefined;
// } & {
// a: string;
// }
推荐阅读
- laravel - Vue JS 组件未显示在 index.blade Laravel 项目中
- r - 如何完全绑定所有行以在鼠标悬停事件上立即查看
- java - 使用扫描仪询问您的姓名
- javascript - 创建 Web Worker 时,Safari 中的 JavaScript“ReferenceError:找不到变量:Worker”
- html - 如何在css中为选中的标签着色?
- javascript - 如何使用 HTML Canvas 从以前的动画帧中保存值?
- python - os.walk() 循环检查文件是否存在
- flutter - 在 android 某些设备上颤振 local_auth 问题
- python - 使用列索引位置而不是列名的 Pandas 融化函数
- python - “部门”对象在 Django 中不可迭代?