title: TypeScript is not capturing errors when adding wrong keys to objects
body: <p>I have <code>Person</code> type defined as below,</p>
  <pre><code>interface IPerson {
    name: string;
    age: number
  }
  </code></pre>
  <p>Also, I'm creating a common type for all methods,</p>
  <pre><code>type IPersonMethod = (
    person: IPerson,
    newAge: number
  ) =&gt; IPerson;
  </code></pre>
  <p>My assumption is whenever I'm creating a new method with this type like below,</p>
  <pre><code>const updateAge: IPersonMethod = (person, newAge) =&gt; {
    return {
      ...person,
      age: newAge,
    }
  }
  </code></pre>
  <p>It will only accept <code>person</code> of type <code>IPerson</code> and <code>age</code> of type <code>number</code> and will always return <code>IPerson</code> type object, so the above is working fine without any failures.</p>
  <p>But if I add any wrong keys (let's say I typed <code>ag</code> instead of <code>age</code> by mistake), why is it not throwing any errors? (Below also works well which is not what I expected)</p>
  <pre><code>const updateAge: IPersonMethod = (person, newAge) =&gt; {
    return {
      ...person,
      ag: newAge,
    }
  }
  </code></pre>