typescript - 具有给定类型的泛型键的类型
问题描述
这听起来很奇怪,所以一个例子可以更好地定义问题:
拥有一个Model
,我不想要给定类型(非通用)K
的键。Model[K]
GivenType
所以我想一个好的开始会是<Model, K extends keyof Model>
,但这并不强制Model[K]
是 type GivenType
。
解决方案
从文档:
type NonFunctionPropertyNames<T> = {
[K in keyof T]: T[K] extends Function ? never : K;
}[keyof T];
interface Part {
id: number;
name: string;
subparts: Part[];
updatePart(newName: string): void;
}
type T41 = NonFunctionPropertyNames<Part>; // "id" | "name" | "subparts"
所以,在我们的例子中:
type ModelProperty<T> = {
[K in keyof T]: T[K] extends Model ? K : never;
}[keyof T];
推荐阅读
- nginx - 如何使用入口 nginx 提供静态内容
- python - 平面点云到图像
- ssh - 通过反向 SSH 连接的完整 SSH 代理
- mongodb - 尝试删除数据时 Models.deleteOne 不工作
- google-apps-script - 从一个选项卡复制非空范围,并粘贴到另一个选项卡的末尾,然后将公式复制到粘贴范围的右侧
- c - 在 C 中的函数中传递指向数组的指针
- unity3d - 如何将相机添加到游戏对象
- amazon-web-services - AWS Step Function 如何模仿 StringStartsWith 条件?
- amazon-web-services - AWS 默认访问策略 SNS 主题和 SQS q
- python - 如何替换有序字典中的值