interface X { n: T; } // Only difference here is order of type parameters function uFirst, T>(x: U) { } function tFirst>(x: U) { } var z: X = null; // Both of these should be allowed uFirst(z); tFirst(z);