title: Target requires 2 element(s) but source may have fewer
body: <p>How i can set correct type for <code>config</code> and don't lose keys for generic below?</p>
  <p>Types:</p>
  <pre><code>type ActionCreatorType = (...args: any[]) =&gt; any;
  type ActionConfig = [ActionCreatorType, ActionCreatorType]
  
  type ActionsMapConfigType = Record&lt;string, ActionConfig&gt;
  type ActionMapType&lt;T extends ActionsMapConfigType&gt; = {
    [K in keyof T]: ActionCreator&lt;T[K][0], T[K][1]&gt;
  }
  
  type ActionType&lt;P extends ActionCreatorType, M extends ActionCreatorType&gt; = {
    type: string,
    payload: P,
    meta: M,
  }
  
  type ConcatArguments&lt;P extends ActionCreatorType, M extends ActionCreatorType&gt; = Parameters&lt;P&gt; &amp; Parameters&lt;M&gt;;
  type ActionCreator&lt;P extends ActionCreatorType, M extends ActionCreatorType&gt; = (...args: ConcatArguments&lt;P, M&gt;) =&gt; ActionType&lt;P, M&gt;
  </code></pre>
  <p>utils:</p>
  <pre><code>export const createActions = &lt;T extends ActionsMapConfigType&gt;(prefix: string, actionsMap: ActionsMapConfigType): ActionMapType&lt;T&gt; =&gt; {
    const result: Partial&lt;ActionMapType&lt;T&gt;&gt; = {};
    for (const [key, value] of Object.entries(actionsMap)) {
      result[key as keyof ActionMapType&lt;T&gt;] = (...args: any[]) =&gt; ({
        type: `${prefix}_${key}`,
        payload: value[0](...args),
        meta: Object.assign({}, ...value[1](...args)),
      })
    }
    return result as ActionMapType&lt;T&gt;;
  };
  </code></pre>
  <p>using</p>
  <pre><code>const config = {
    test: [
      (a: number) =&gt; ({}),
      (a: number, b: string) =&gt; ({}),
    ]
  }
  
  const action = createActions&lt;typeof config&gt;('form', config);
  </code></pre>
  <p><code>createActions&lt;typeof config&gt;('form', config)</code> - contain error &quot;Target requires 2 element(s) but source may have fewer.&quot;</p>