首页 > 解决方案 > 打字稿超类型

问题描述

我正在寻找一种 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 ...
}

标签: typescript

解决方案


您必须指定父级,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 { ... }

推荐阅读