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
) {
// ...
}
