44 lines
842 B
TypeScript
44 lines
842 B
TypeScript
// @declaration: true
|
|
|
|
export class ExportedClass<T> {
|
|
x: T;
|
|
}
|
|
|
|
class LocalClass<T, U> {
|
|
x: T;
|
|
y: U;
|
|
}
|
|
|
|
export interface ExportedInterface {
|
|
x: number;
|
|
}
|
|
|
|
interface LocalInterface {
|
|
x: number;
|
|
}
|
|
|
|
function getLocalClass<T>(c: T) {
|
|
return LocalClass;
|
|
}
|
|
|
|
function getExportedClass<T>(c: T) {
|
|
return ExportedClass;
|
|
}
|
|
|
|
|
|
|
|
export class MyClass extends getLocalClass<LocalInterface>(undefined)<string, number> { // error LocalClass is inaccisible
|
|
}
|
|
|
|
|
|
export class MyClass2 extends getExportedClass<LocalInterface>(undefined)<string> { // OK
|
|
}
|
|
|
|
|
|
export class MyClass3 extends getExportedClass<LocalInterface>(undefined)<LocalInterface> { // Error LocalInterface is inaccisble
|
|
}
|
|
|
|
|
|
export class MyClass4 extends getExportedClass<LocalInterface>(undefined)<ExportedInterface> { // OK
|
|
}
|