41 lines
1.3 KiB
Plaintext
41 lines
1.3 KiB
Plaintext
tests/cases/conformance/types/intersection/intersectionTypeInference.ts(5,5): error TS2322: Type 'T' is not assignable to type 'T & U'.
|
|
Type 'T' is not assignable to type 'U'.
|
|
tests/cases/conformance/types/intersection/intersectionTypeInference.ts(6,5): error TS2322: Type 'U' is not assignable to type 'T & U'.
|
|
Type 'U' is not assignable to type 'T'.
|
|
|
|
|
|
==== tests/cases/conformance/types/intersection/intersectionTypeInference.ts (2 errors) ====
|
|
function extend<T, U>(obj1: T, obj2: U): T & U {
|
|
var result: T & U;
|
|
obj1 = result;
|
|
obj2 = result;
|
|
result = obj1; // Error
|
|
~~~~~~
|
|
!!! error TS2322: Type 'T' is not assignable to type 'T & U'.
|
|
!!! error TS2322: Type 'T' is not assignable to type 'U'.
|
|
result = obj2; // Error
|
|
~~~~~~
|
|
!!! error TS2322: Type 'U' is not assignable to type 'T & U'.
|
|
!!! error TS2322: Type 'U' is not assignable to type 'T'.
|
|
return result;
|
|
}
|
|
|
|
var x = extend({ a: "hello" }, { b: 42 });
|
|
var s = x.a;
|
|
var n = x.b;
|
|
|
|
interface A<T> {
|
|
a: T;
|
|
}
|
|
|
|
interface B<U> {
|
|
b: U;
|
|
}
|
|
|
|
function foo<T, U>(obj: A<T> & B<U>): T | U {
|
|
return undefined;
|
|
}
|
|
|
|
var z = foo({ a: "hello", b: 42 });
|
|
var z: string | number;
|
|
|