TypeScript/tests/baselines/reference/mappedTypes5.types
Anders Hejlsberg 9619dc14f9 Add tests
2017-11-04 08:08:28 -07:00

293 lines
6.8 KiB
Plaintext

=== tests/cases/conformance/types/mapped/mappedTypes5.ts ===
function f<T>(p: Partial<T>, r: Readonly<T>, pr: Partial<Readonly<T>>, rp: Readonly<Partial<T>>) {
>f : <T>(p: Partial<T>, r: Readonly<T>, pr: Partial<Readonly<T>>, rp: Readonly<Partial<T>>) => void
>T : T
>p : Partial<T>
>Partial : Partial<T>
>T : T
>r : Readonly<T>
>Readonly : Readonly<T>
>T : T
>pr : Partial<Readonly<T>>
>Partial : Partial<T>
>Readonly : Readonly<T>
>T : T
>rp : Readonly<Partial<T>>
>Readonly : Readonly<T>
>Partial : Partial<T>
>T : T
let a1: Partial<T> = p;
>a1 : Partial<T>
>Partial : Partial<T>
>T : T
>p : Partial<T>
let a2: Partial<T> = r;
>a2 : Partial<T>
>Partial : Partial<T>
>T : T
>r : Readonly<T>
let a3: Partial<T> = pr;
>a3 : Partial<T>
>Partial : Partial<T>
>T : T
>pr : Partial<Readonly<T>>
let a4: Partial<T> = rp;
>a4 : Partial<T>
>Partial : Partial<T>
>T : T
>rp : Readonly<Partial<T>>
let b1: Readonly<T> = p; // Error
>b1 : Readonly<T>
>Readonly : Readonly<T>
>T : T
>p : Partial<T>
let b2: Readonly<T> = r;
>b2 : Readonly<T>
>Readonly : Readonly<T>
>T : T
>r : Readonly<T>
let b3: Readonly<T> = pr; // Error
>b3 : Readonly<T>
>Readonly : Readonly<T>
>T : T
>pr : Partial<Readonly<T>>
let b4: Readonly<T> = rp; // Error
>b4 : Readonly<T>
>Readonly : Readonly<T>
>T : T
>rp : Readonly<Partial<T>>
let c1: Partial<Readonly<T>> = p;
>c1 : Partial<Readonly<T>>
>Partial : Partial<T>
>Readonly : Readonly<T>
>T : T
>p : Partial<T>
let c2: Partial<Readonly<T>> = r;
>c2 : Partial<Readonly<T>>
>Partial : Partial<T>
>Readonly : Readonly<T>
>T : T
>r : Readonly<T>
let c3: Partial<Readonly<T>> = pr;
>c3 : Partial<Readonly<T>>
>Partial : Partial<T>
>Readonly : Readonly<T>
>T : T
>pr : Partial<Readonly<T>>
let c4: Partial<Readonly<T>> = rp;
>c4 : Partial<Readonly<T>>
>Partial : Partial<T>
>Readonly : Readonly<T>
>T : T
>rp : Readonly<Partial<T>>
let d1: Readonly<Partial<T>> = p;
>d1 : Readonly<Partial<T>>
>Readonly : Readonly<T>
>Partial : Partial<T>
>T : T
>p : Partial<T>
let d2: Readonly<Partial<T>> = r;
>d2 : Readonly<Partial<T>>
>Readonly : Readonly<T>
>Partial : Partial<T>
>T : T
>r : Readonly<T>
let d3: Readonly<Partial<T>> = pr;
>d3 : Readonly<Partial<T>>
>Readonly : Readonly<T>
>Partial : Partial<T>
>T : T
>pr : Partial<Readonly<T>>
let d4: Readonly<Partial<T>> = rp;
>d4 : Readonly<Partial<T>>
>Readonly : Readonly<T>
>Partial : Partial<T>
>T : T
>rp : Readonly<Partial<T>>
}
// Repro from #17682
type State = {
>State : State
[key: string]: string | boolean | number | null;
>key : string
>null : null
};
type Args1<T extends State> = {
>Args1 : Args1<T>
>T : T
>State : State
readonly previous: Readonly<Partial<T>>;
>previous : Readonly<Partial<T>>
>Readonly : Readonly<T>
>Partial : Partial<T>
>T : T
readonly current: Readonly<Partial<T>>;
>current : Readonly<Partial<T>>
>Readonly : Readonly<T>
>Partial : Partial<T>
>T : T
};
type Args2<T extends State> = {
>Args2 : Args2<T>
>T : T
>State : State
readonly previous: Partial<Readonly<T>>;
>previous : Partial<Readonly<T>>
>Partial : Partial<T>
>Readonly : Readonly<T>
>T : T
readonly current: Partial<Readonly<T>>;
>current : Partial<Readonly<T>>
>Partial : Partial<T>
>Readonly : Readonly<T>
>T : T
};
function doit<T extends State>() {
>doit : <T extends State>() => void
>T : T
>State : State
let previous: Partial<T> = Object.create(null);
>previous : Partial<T>
>Partial : Partial<T>
>T : T
>Object.create(null) : any
>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType<any>): any; }
>Object : ObjectConstructor
>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType<any>): any; }
>null : null
let current: Partial<T> = Object.create(null);
>current : Partial<T>
>Partial : Partial<T>
>T : T
>Object.create(null) : any
>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType<any>): any; }
>Object : ObjectConstructor
>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType<any>): any; }
>null : null
let args1: Args1<T> = { previous, current };
>args1 : Args1<T>
>Args1 : Args1<T>
>T : T
>{ previous, current } : { previous: Partial<T>; current: Partial<T>; }
>previous : Partial<T>
>current : Partial<T>
let args2: Args2<T> = { previous, current };
>args2 : Args2<T>
>Args2 : Args2<T>
>T : T
>{ previous, current } : { previous: Partial<T>; current: Partial<T>; }
>previous : Partial<T>
>current : Partial<T>
}
type State2 = { foo: number, bar: string };
>State2 : State2
>foo : number
>bar : string
type Args3 = {
>Args3 : Args3
readonly previous: Readonly<Partial<State2>>;
>previous : Readonly<Partial<State2>>
>Readonly : Readonly<T>
>Partial : Partial<T>
>State2 : State2
readonly current: Readonly<Partial<State2>>;
>current : Readonly<Partial<State2>>
>Readonly : Readonly<T>
>Partial : Partial<T>
>State2 : State2
};
type Args4 = {
>Args4 : Args4
readonly previous: Partial<Readonly<State2>>;
>previous : Partial<Readonly<State2>>
>Partial : Partial<T>
>Readonly : Readonly<T>
>State2 : State2
readonly current: Partial<Readonly<State2>>;
>current : Partial<Readonly<State2>>
>Partial : Partial<T>
>Readonly : Readonly<T>
>State2 : State2
};
function doit2() {
>doit2 : () => void
let previous: Partial<State2> = Object.create(null);
>previous : Partial<State2>
>Partial : Partial<T>
>State2 : State2
>Object.create(null) : any
>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType<any>): any; }
>Object : ObjectConstructor
>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType<any>): any; }
>null : null
let current: Partial<State2> = Object.create(null);
>current : Partial<State2>
>Partial : Partial<T>
>State2 : State2
>Object.create(null) : any
>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType<any>): any; }
>Object : ObjectConstructor
>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType<any>): any; }
>null : null
let args1: Args3 = { previous, current };
>args1 : Args3
>Args3 : Args3
>{ previous, current } : { previous: Partial<State2>; current: Partial<State2>; }
>previous : Partial<State2>
>current : Partial<State2>
let args2: Args4 = { previous, current };
>args2 : Args4
>Args4 : Args4
>{ previous, current } : { previous: Partial<State2>; current: Partial<State2>; }
>previous : Partial<State2>
>current : Partial<State2>
}