function testConcrete(a: T): U { return a; } function testDerived(a: T): U { return a; } testConcrete(1); testDerived(2); class TestConcrete { test(a: T, b: U): V { return a + b; } } class TestDerived { test(a: T, b: U): V { return a + b; } } var tConcrete = new TestConcrete(); tConcrete.test(1, 2); var tDerived = new TestDerived() tDerived.test(1, 2);