【发布时间】:2021-05-14 12:53:39
【问题描述】:
假设我们有以下类型:
interface User {
name: string
}
interface Session {
id: string
startTime: number
moderator?: User
student: User
instructor: User
observer: User
}
有没有办法从Session 获取keyof,这仅适用于User 类型的键?在这种情况下,这将是 "moderator" | "student" | "instructor" | "observer",但不是 "id" | "startTime"。假设在 任何 版本的 TypeScript 中(如果这已更改或正在开发语言功能),但我使用 4.1.2 作为参考。
编辑相关问题
链接的问题确实完全回答了这个问题,尽管我觉得这种更通用的措辞很有用。我还将User 字段之一设为可选,因为我的真实代码有可选值,这让我很失望。我的具体问题(基于链接的问题)的一个衬里是:
type UserKeys = {[K in keyof Session]-?: Session[K] extends User|undefined ? K : never}[keyof Session];
*如果您有可选项,请注意 -? 和 User|undefined。
【问题讨论】:
-
在这里翻译另一个问题的答案会产生this code。
-
相关问题确实回答了我的问题,尽管我认为标题可以改进,因为答案不是特定于字符串的。
标签: typescript