网站搜索

javascript - 泛型函数继承值的 keyof


我有以下函数签名:

duplicationValidatorAsync<T, K extends keyof T>(
    obsArray: Observable<T[]>,
    key: K,
    equalityFn: EqualityFn = null
)

调用此函数时,我必须指定两次密钥:

duplicationValidatorAsync<Organization, 'name'>(obs$, 'name', CommonValidators.caseInsensitiveTrimEqualityFn)

有什么办法可以避免必须这样做吗?如果能够调用这个函数,并且 key 参数能够从签名的泛型部分继承其值,那就好了。

答案#1

你可以直接使用 keyof T:

duplicationValidatorAsync<T>(
// Removed K here ---------^
    obsArray: Observable<T[]>,
    key: keyof T,
// Use --^^^^^^^
    equalityFn: EqualityFn = null
) {
    // ...
}