当我从函数调用中解构时,我有一个奇怪的行为-我得到的变量变成any
。但是,如果我不进行销毁,它们将具有正确的类型。一件事是,它取决于参数的数量。 Playground
const contexts = { a: {c: 1}, b: 2 }
type AppContexts = typeof contexts;
export function useApp<
C extends Array<keyof AppContexts>,
ResultContexts extends Pick<AppContexts, C extends (infer K)[] ? K : never>
>(...list: C): ResultContexts {
return null as any;
}
const one = useApp('a', 'b');
one.a.c // good
const { b } = one; // good
// const { a } = useApp('a');
// a // a is any
// const { a } = useApp('a', 'b');
// a // a is number