typescript - 打字稿超类型
问题描述
我正在寻找一种 T 的超级类型?就像是:
foo<T>(obj: Super<T>): T
假设 T 是一个具有{ username, password }属性的对象。
Super < T > 具有{ username, password, confirmPassword }的属性。
函数签名示例:
function excludeKeys<T>(obj: Super<T>, excludeKeys: string[]): T {
// Exclude key/pairs form original object ...
}
解决方案
您必须指定父级,T extends U
以便 TypeScript 可以推断父级类型:
function foo<T extends U, U>(obj: U): T { ... }
或者你可以尝试这样的事情:
type Super<T> = T extends infer U ? U : object;
function foo<T>(obj: Super<T>): T { ... }
推荐阅读
- jquery - jQuery 更改淡出时间加载器屏幕
- css - 使用伪 :after-element 创建三角形颜色叠加
- kubernetes - K8s 服务无法ping通
- python - 基于验证损失和验证准确率保存 keras 模型
- angular - 类型 HTTPOriginal 不可分配给类型 Provider,插件安装后出现离子错误
- android-studio - Flutter Android studio build failing
- android - 在改造验证器中使用协程
- python - 在 numpy 数组中,dtype np.datetime64 或 pandas object datetime.date 更快吗?
- kotlin - 是否有一种优雅的 kotlin 方式可以让编译器相信我刚刚为其分配了真实值的可空字段不能再为空?
- java - 'Stock stock = new Stock("HR.S")' 如何导致输出?