1
gydi 2022-04-27 13:04:50 +08:00
我改成这样就可以了
function useTableWithCustomKey<T, K = keyof StringOnly<T>>( records: T[], keyName: K, ) {} |
2
noe132 2022-04-27 13:06:56 +08:00
研究了半天,我找到一个可能是答案的答案
typescript 目前不支持 partial type parameter inference https://stackoverflow.com/questions/64376774/in-typescript-how-can-i-infer-my-arguments-and-impose-a-constraint-that-all-ite function useTable<T extends { name: string }>(records: Array<T>) { type IsNameInKeys = 'name' extends keyof T ? true : false const a: IsNameInKeys = true; const b: IsNameInKeys = false; return useTableWithCustomKey(records, 'name'); } 这个地方 是不是看起来 IsNameInKeys 不是 true 就是 false ?然而 变量 a 和 b 的类型检查都无法通过。 |
3
noe132 2022-04-27 13:08:25 +08:00
所以要么所有类型都是具体类型,要么所有类型都是类型参数。1 楼这个例子就是把 keyName 提升到了类型参数
|