2017-09-15 19:06:58 +02:00
|
|
|
enum E { v1, v2 };
|
|
|
|
|
2016-11-29 09:04:20 +01:00
|
|
|
function f<T extends { b: string }>(p1: T, p2: T[]) {
|
|
|
|
var t: T;
|
|
|
|
|
|
|
|
var i: T["b"];
|
|
|
|
var k: keyof T;
|
|
|
|
|
|
|
|
var mapped_generic: {[P in keyof T]: T[P]};
|
|
|
|
var mapped: {[P in "b"]: T[P]};
|
|
|
|
|
|
|
|
var union_generic: T | { a: number };
|
2017-09-15 19:06:58 +02:00
|
|
|
var union_primitive: { a: number } | number;
|
2016-11-29 09:04:20 +01:00
|
|
|
var intersection_generic: T & { a: number };
|
2017-09-15 19:06:58 +02:00
|
|
|
var intersection_primitive: { a: number } & string;
|
|
|
|
var num: number;
|
|
|
|
var str: string;
|
|
|
|
var literal_string: "string";
|
|
|
|
var literal_number: 42;
|
|
|
|
var e: E;
|
2016-11-29 09:04:20 +01:00
|
|
|
|
|
|
|
var u: undefined;
|
|
|
|
var n: null;
|
|
|
|
|
|
|
|
var a: any;
|
|
|
|
|
|
|
|
var {...r1} = p1; // Error, generic type paramterre
|
|
|
|
var {...r2} = p2; // OK
|
|
|
|
var {...r3} = t; // Error, generic type paramter
|
|
|
|
var {...r4} = i; // Error, index access
|
|
|
|
var {...r5} = k; // Error, index
|
|
|
|
|
|
|
|
var {...r6} = mapped_generic; // Error, generic mapped object type
|
|
|
|
var {...r7} = mapped; // OK, non-generic mapped type
|
|
|
|
|
|
|
|
var {...r8} = union_generic; // Error, union with generic type parameter
|
2017-09-15 19:06:58 +02:00
|
|
|
var {...r9} = union_primitive; // Error, union with generic type parameter
|
2016-11-29 09:04:20 +01:00
|
|
|
|
|
|
|
var {...r10} = intersection_generic; // Error, intersection with generic type parameter
|
2017-09-15 19:06:58 +02:00
|
|
|
var {...r11} = intersection_primitive; // Error, intersection with generic type parameter
|
|
|
|
|
|
|
|
var {...r12} = num; // Error
|
|
|
|
var {...r13} = str; // Error
|
2016-11-29 09:04:20 +01:00
|
|
|
|
2017-09-15 19:06:58 +02:00
|
|
|
var {...r14} = u; // error, undefined-only not allowed
|
|
|
|
var {...r15} = n; // error, null-only not allowed
|
2016-11-29 09:04:20 +01:00
|
|
|
|
|
|
|
var {...r16} = a; // OK
|
2017-09-15 19:06:58 +02:00
|
|
|
|
|
|
|
var {...r17} = literal_string; // Error
|
|
|
|
var {...r18} = literal_number; // Error
|
|
|
|
|
|
|
|
var {...r19} = e; // Error, enum
|
2017-09-14 00:13:34 +02:00
|
|
|
}
|