<!-- 🚨 STOP 🚨 𝗦𝗧𝗢𝗣 🚨 𝑺𝑻𝑶𝑷 🚨 Half of all issues filed here are duplicates, answered in the FAQ, or not appropriate for the bug tracker. Even if you think you've found a *bug*, please read the FAQ first, especially the Common "Bugs" That Aren't Bugs section! Please help us by doing the following steps before logging an issue: * Search: https://github.com/Microsoft/TypeScript/search?type=Issues * Read the FAQ: https://github.com/Microsoft/TypeScript/wiki/FAQ Please fill in the *entire* template below. --> <!-- Please try to reproduce the issue with `typescript@next`. It may have already been fixed. --> **TypeScript Version:** master (8f654f0) <!-- Search terms you tried before logging this (so others can find this issue more easily) --> **Search Terms:** conditional type assignability assignable constraint contravariant infer variable parameter unsound **Code** ```ts type Foo<A> = [A] extends [[infer B]] ? (arg: B) => void : never; function fortyTwo<A>(x: Foo<A>) { x(42); } fortyTwo<[string]>((arg: string) => console.log(arg.slice())); ``` **Expected behavior:** Compile error on `x(42)`. **Actual behavior:** Successful compilation and runtime error. **Playground Link:** [link](https://www.typescriptlang.org/play/#src=type%20Foo2%3CA%3E%20%3D%20%5BA%5D%20extends%20%5B%5Binfer%20B%5D%5D%20%3F%20(arg%3A%20B)%20%3D%3E%20void%20%3A%20never%3B%0D%0Afunction%20fortyTwo%3CA%3E(x%3A%20Foo2%3CA%3E)%20%7B%20x(42)%3B%20%7D%0D%0AfortyTwo%3C%5Bstring%5D%3E((arg%3A%20string)%20%3D%3E%20console.log(arg.slice()))%3B%0D%0A) **Related Issues:** #26933