我想根据 TypeScript 中另一个对象的键创建一个类型。
我已经设法通过类型推断来做到这一点。但是,如果我使用显式类型Record<string, something>
,则keyof
给我string
而不是我使用的实际键的联合。
这是示例代码:
type FileType = "image" | "video" | "document";
type FileTypeList = Record<string, FileType>
const inferedFileList = {
a: "image",
b: "video",
c: "document"
}
//type files = "a" | "b" | "c"
type files = keyof typeof inferedFileList;
const explicitelyTypedList : FileTypeList = {
a: "image",
b: "video",
c: "document"
}
//type typedFiles = string
type typedFiles = keyof typeof explicitelyTypedList;
有什么方法可以在表单中使用显式类型Record<string, something>
并仍然获得联合类型keyof
吗?我想可以使用行为类似typeof
但使用对象的形状而不是其声明的类型的关键字,但是 TypeScript 是否实现了这样的事情?