Closed
Description
TypeScript Version: 3.7.2
Search Terms:
keyof interface function arguments args
Code
export interface ISocialButtonTypes {
vk: {vk: string};
fb: {fb: string};
ok: {ok: string};
twitter: {tw: string};
};
export type createSocialItem = <T extends keyof ISocialButtonTypes>(
socialType: T,
params: ISocialButtonTypes[T]
) => void;
function createSocialItem<T extends keyof ISocialButtonTypes>(
socialType: T,
params?: ISocialButtonTypes[T]
): ISocialButtonTypes[T] {
return params
}
// the compiler show error, but suggest all keys
createSocialItem('vk', { ok: 'dwdw' })
~~~~~~~~~~~~~
Expected behavior:
The second param should suggest only vk
key.
Actual behavior:
The params field suggests all keys, but the compiler show error on the incorrect key. The function return works correctly
Playground Link:
https://cutt.ly/cruK8eX
Related Issues: