title: Typescript: Why does `as unknown as x` work
body: <p>I have <code>data</code> its type is <code>ItemDTO</code>. I want to pass it into a function that accepts an argument of type <code>Item</code>.</p>
  <p>Typescript is complaining that this might be a mistake because the two types do not sufficiently overlap and if it's intentional to convert to <code>unknown</code> first.</p>
  <p><em>Why</em> does this work? What is it about converting a type to <code>unknown</code> first that works?</p>
  <p>Said another way:</p>
  <pre><code>function foo(arg: Item){}
  const data: ItemDTO = {key: 123}
  const results = foo(data as Item) // this doesn't work
  const alternative = foo((data as unknown) as Item) // this works
  </code></pre>