TypeScript/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.types
2015-06-16 06:55:52 -07:00

50 lines
1.1 KiB
Plaintext

=== tests/cases/compiler/recursivelySpecializedConstructorDeclaration.ts ===
module MsPortal.Controls.Base.ItemList {
>MsPortal : typeof MsPortal
>Controls : typeof Controls
>Base : typeof Base
>ItemList : typeof ItemList
export interface Interface<TValue> {
>Interface : Interface<TValue>
>TValue : TValue
// Removing this line fixes the constructor of ItemValue
options: ViewModel<TValue>;
>options : ViewModel<TValue>
>ViewModel : ViewModel<TValue>
>TValue : TValue
}
export class ItemValue<T> {
>ItemValue : ItemValue<T>
>T : T
constructor(value: T) {
>value : T
>T : T
}
}
export class ViewModel<TValue> extends ItemValue<TValue> {
>ViewModel : ViewModel<TValue>
>TValue : TValue
>ItemValue : ItemValue<TValue>
>TValue : TValue
}
}
// Generates:
/*
declare module MsPortal.Controls.Base.ItemList {
interface Interface<TValue> {
options: ViewModel<TValue>;
}
class ItemValue<T> {
constructor(value: T);
}
class ViewModel<TValue> extends ItemValue<TValue> {
}
}
*/