TypeScript/tests/cases/conformance/classes/classExpressions/genericClassExpressionInFunction.ts

31 lines
601 B
TypeScript
Raw Normal View History

2015-11-02 19:44:25 +01:00
class A<T> {
genericVar: T
}
function B1<U>() {
2015-11-02 19:44:25 +01:00
// class expression can use T
return class extends A<U> { }
}
class B2<V> {
anon = class extends A<V> { }
2015-11-02 19:44:25 +01:00
}
2015-11-09 19:21:54 +01:00
function B3<W>() {
return class Inner<TInner> extends A<W> { }
}
2015-11-02 19:44:25 +01:00
// extends can call B
class K extends B1<number>() {
namae: string;
}
class C extends (new B2<number>().anon) {
2015-11-02 19:44:25 +01:00
name: string;
}
2015-11-09 19:21:54 +01:00
let b3Number = B3<number>();
class S extends b3Number<string> {
nom: string;
}
var c = new C();
var k = new K();
2015-11-09 19:21:54 +01:00
var s = new S();
2015-11-02 19:44:25 +01:00
c.genericVar = 12;
k.genericVar = 12;
2015-11-09 19:21:54 +01:00
s.genericVar = 12;