打字稿超类型

时间:2019-04-02 11:06:08

标签: typescript

我正在寻找一种T的超级类型? 像这样:

foo<T>(obj: Super<T>): T

可以说T是一个对象,其属性为 {用户名,密码}
超级,属性为 {用户名,密码,confirmPassword}

函数签名示例:

function excludeKeys<T>(obj: Super<T>, excludeKeys: string[]): T {

    // Exclude key/pairs form original object ...
}

1 个答案:

答案 0 :(得分:2)

您必须使用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 { ... }
相关问题