mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-06-14 07:02:44 -05:00
update tests
This commit is contained in:
@@ -28,8 +28,6 @@ dependentReturnType1.ts(275,9): error TS2322: Type '1' is not assignable to type
|
||||
dependentReturnType1.ts(278,9): error TS2322: Type '2' is not assignable to type 'HelperCond<{ x: U; y: V; }, { x: string; y: true; }, 1, { x: number; y: false; }, 2>'.
|
||||
dependentReturnType1.ts(280,5): error TS2322: Type '0' is not assignable to type 'HelperCond<{ x: U; y: V; }, { x: string; y: true; }, 1, { x: number; y: false; }, 2>'.
|
||||
dependentReturnType1.ts(302,9): error TS2322: Type 'string' is not assignable to type 'string[]'.
|
||||
dependentReturnType1.ts(311,9): error TS2322: Type 'undefined' is not assignable to type 'T extends {} ? void : T extends undefined ? number : never'.
|
||||
dependentReturnType1.ts(313,5): error TS2322: Type 'number' is not assignable to type 'T extends {} ? void : T extends undefined ? number : never'.
|
||||
dependentReturnType1.ts(334,9): error TS2322: Type '1' is not assignable to type '4'.
|
||||
dependentReturnType1.ts(367,13): error TS2322: Type 'number' is not assignable to type 'T extends 1 ? number : T extends 2 ? string : never'.
|
||||
dependentReturnType1.ts(369,9): error TS2322: Type 'string' is not assignable to type 'T extends 1 ? number : T extends 2 ? string : never'.
|
||||
@@ -46,7 +44,7 @@ dependentReturnType1.ts(488,9): error TS2322: Type 'R' is not assignable to type
|
||||
dependentReturnType1.ts(514,5): error TS2322: Type '1' is not assignable to type 'never'.
|
||||
|
||||
|
||||
==== dependentReturnType1.ts (41 errors) ====
|
||||
==== dependentReturnType1.ts (39 errors) ====
|
||||
interface A {
|
||||
1: number;
|
||||
2: string;
|
||||
@@ -413,12 +411,8 @@ dependentReturnType1.ts(514,5): error TS2322: Type '1' is not assignable to type
|
||||
): T extends {} ? void : T extends undefined ? number : never {
|
||||
if (x) {
|
||||
return;
|
||||
~~~~~~
|
||||
!!! error TS2322: Type 'undefined' is not assignable to type 'T extends {} ? void : T extends undefined ? number : never'.
|
||||
}
|
||||
return 1;
|
||||
~~~~~~
|
||||
!!! error TS2322: Type 'number' is not assignable to type 'T extends {} ? void : T extends undefined ? number : never'.
|
||||
}
|
||||
|
||||
// Multiple type parameters at once
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
dependentReturnType13.ts(29,9): error TS2322: Type '2' is not assignable to type 'T extends string ? 1 : T extends string[] ? 2 : T extends number[] ? 3 : never'.
|
||||
dependentReturnType13.ts(31,5): error TS2322: Type '1' is not assignable to type 'T extends string ? 1 : T extends string[] ? 2 : T extends number[] ? 3 : never'.
|
||||
dependentReturnType13.ts(49,9): error TS2322: Type '2' is not assignable to type 'T extends Cat ? 1 : T extends Dog ? 2 : never'.
|
||||
dependentReturnType13.ts(52,5): error TS2322: Type '1' is not assignable to type 'T extends Cat ? 1 : T extends Dog ? 2 : never'.
|
||||
dependentReturnType13.ts(79,9): error TS2322: Type '2' is not assignable to type 'T extends number[] ? 2 : U extends true ? T extends string[] ? 3 : T extends string ? 1 : never : U extends false ? T extends string[] ? 4 : T extends string ? 5 : never : never'.
|
||||
dependentReturnType13.ts(83,13): error TS2322: Type '3' is not assignable to type 'T extends number[] ? 2 : U extends true ? T extends string[] ? 3 : T extends string ? 1 : never : U extends false ? T extends string[] ? 4 : T extends string ? 5 : never : never'.
|
||||
dependentReturnType13.ts(85,9): error TS2322: Type '1' is not assignable to type 'T extends number[] ? 2 : U extends true ? T extends string[] ? 3 : T extends string ? 1 : never : U extends false ? T extends string[] ? 4 : T extends string ? 5 : never : never'.
|
||||
dependentReturnType13.ts(88,9): error TS2322: Type '4' is not assignable to type 'T extends number[] ? 2 : U extends true ? T extends string[] ? 3 : T extends string ? 1 : never : U extends false ? T extends string[] ? 4 : T extends string ? 5 : never : never'.
|
||||
dependentReturnType13.ts(90,5): error TS2322: Type '5' is not assignable to type 'T extends number[] ? 2 : U extends true ? T extends string[] ? 3 : T extends string ? 1 : never : U extends false ? T extends string[] ? 4 : T extends string ? 5 : never : never'.
|
||||
dependentReturnType13.ts(31,9): error TS2322: Type '3' is not assignable to type 'T extends string ? 1 : T extends string[] ? 2 : T extends number[] ? 3 : never'.
|
||||
dependentReturnType13.ts(34,9): error TS2322: Type '2' is not assignable to type 'T extends string ? 1 : T extends string[] ? 2 : T extends number[] ? 3 : never'.
|
||||
dependentReturnType13.ts(36,5): error TS2322: Type '1' is not assignable to type 'T extends string ? 1 : T extends string[] ? 2 : T extends number[] ? 3 : never'.
|
||||
dependentReturnType13.ts(54,9): error TS2322: Type '2' is not assignable to type 'T extends Cat ? 1 : T extends Dog ? 2 : never'.
|
||||
dependentReturnType13.ts(57,5): error TS2322: Type '1' is not assignable to type 'T extends Cat ? 1 : T extends Dog ? 2 : never'.
|
||||
dependentReturnType13.ts(84,9): error TS2322: Type '2' is not assignable to type 'T extends number[] ? 2 : U extends true ? T extends string[] ? 3 : T extends string ? 1 : never : U extends false ? T extends string[] ? 4 : T extends string ? 5 : never : never'.
|
||||
dependentReturnType13.ts(88,13): error TS2322: Type '3' is not assignable to type 'T extends number[] ? 2 : U extends true ? T extends string[] ? 3 : T extends string ? 1 : never : U extends false ? T extends string[] ? 4 : T extends string ? 5 : never : never'.
|
||||
dependentReturnType13.ts(90,9): error TS2322: Type '1' is not assignable to type 'T extends number[] ? 2 : U extends true ? T extends string[] ? 3 : T extends string ? 1 : never : U extends false ? T extends string[] ? 4 : T extends string ? 5 : never : never'.
|
||||
dependentReturnType13.ts(93,9): error TS2322: Type '4' is not assignable to type 'T extends number[] ? 2 : U extends true ? T extends string[] ? 3 : T extends string ? 1 : never : U extends false ? T extends string[] ? 4 : T extends string ? 5 : never : never'.
|
||||
dependentReturnType13.ts(95,5): error TS2322: Type '5' is not assignable to type 'T extends number[] ? 2 : U extends true ? T extends string[] ? 3 : T extends string ? 1 : never : U extends false ? T extends string[] ? 4 : T extends string ? 5 : never : never'.
|
||||
|
||||
|
||||
==== dependentReturnType13.ts (9 errors) ====
|
||||
==== dependentReturnType13.ts (10 errors) ====
|
||||
// Restrictions on what kind of union types can be narrowed.
|
||||
|
||||
function f1<T extends string | string[]>(param: T):
|
||||
@@ -32,11 +33,18 @@ dependentReturnType13.ts(90,5): error TS2322: Type '5' is not assignable to type
|
||||
return 1;
|
||||
}
|
||||
|
||||
declare function isNumberArray(x: unknown): x is number[];
|
||||
|
||||
function f3<T extends string | string[] | number[]>(param: T): // Bad.
|
||||
T extends string ? 1 :
|
||||
T extends string[] ? 2 :
|
||||
T extends number[] ? 3 :
|
||||
never {
|
||||
if (isNumberArray(param)) {
|
||||
return 3;
|
||||
~~~~~~
|
||||
!!! error TS2322: Type '3' is not assignable to type 'T extends string ? 1 : T extends string[] ? 2 : T extends number[] ? 3 : never'.
|
||||
}
|
||||
if (Array.isArray(param)) {
|
||||
return 2;
|
||||
~~~~~~
|
||||
@@ -120,8 +128,6 @@ dependentReturnType13.ts(90,5): error TS2322: Type '5' is not assignable to type
|
||||
!!! error TS2322: Type '5' is not assignable to type 'T extends number[] ? 2 : U extends true ? T extends string[] ? 3 : T extends string ? 1 : never : U extends false ? T extends string[] ? 4 : T extends string ? 5 : never : never'.
|
||||
}
|
||||
|
||||
declare function isNumberArray(x: unknown): x is number[];
|
||||
|
||||
function f7<T extends string | string[], U extends number | number[]>(param: T, other: U):
|
||||
U extends number ?
|
||||
T extends string[] ? 2 :
|
||||
|
||||
@@ -51,27 +51,38 @@ function f2<T extends string | string[] | number[]>(param: T):
|
||||
return 1;
|
||||
}
|
||||
|
||||
declare function isNumberArray(x: unknown): x is number[];
|
||||
>isNumberArray : Symbol(isNumberArray, Decl(dependentReturnType13.ts, 20, 1))
|
||||
>x : Symbol(x, Decl(dependentReturnType13.ts, 22, 31))
|
||||
>x : Symbol(x, Decl(dependentReturnType13.ts, 22, 31))
|
||||
|
||||
function f3<T extends string | string[] | number[]>(param: T): // Bad.
|
||||
>f3 : Symbol(f3, Decl(dependentReturnType13.ts, 20, 1))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 22, 12))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 22, 52))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 22, 12))
|
||||
>f3 : Symbol(f3, Decl(dependentReturnType13.ts, 22, 58))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 24, 12))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 24, 52))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 24, 12))
|
||||
|
||||
T extends string ? 1 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 22, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 24, 12))
|
||||
|
||||
T extends string[] ? 2 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 22, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 24, 12))
|
||||
|
||||
T extends number[] ? 3 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 22, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 24, 12))
|
||||
|
||||
never {
|
||||
if (isNumberArray(param)) {
|
||||
>isNumberArray : Symbol(isNumberArray, Decl(dependentReturnType13.ts, 20, 1))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 24, 52))
|
||||
|
||||
return 3;
|
||||
}
|
||||
if (Array.isArray(param)) {
|
||||
>Array.isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
|
||||
>isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 22, 52))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 24, 52))
|
||||
|
||||
return 2;
|
||||
}
|
||||
@@ -79,135 +90,135 @@ function f3<T extends string | string[] | number[]>(param: T): // Bad.
|
||||
}
|
||||
|
||||
class Dog {
|
||||
>Dog : Symbol(Dog, Decl(dependentReturnType13.ts, 31, 1))
|
||||
>Dog : Symbol(Dog, Decl(dependentReturnType13.ts, 36, 1))
|
||||
|
||||
bark(): void {}
|
||||
>bark : Symbol(Dog.bark, Decl(dependentReturnType13.ts, 33, 11))
|
||||
>bark : Symbol(Dog.bark, Decl(dependentReturnType13.ts, 38, 11))
|
||||
}
|
||||
|
||||
class Cat {
|
||||
>Cat : Symbol(Cat, Decl(dependentReturnType13.ts, 35, 1))
|
||||
>Cat : Symbol(Cat, Decl(dependentReturnType13.ts, 40, 1))
|
||||
|
||||
meow(): void {}
|
||||
>meow : Symbol(Cat.meow, Decl(dependentReturnType13.ts, 37, 11))
|
||||
>meow : Symbol(Cat.meow, Decl(dependentReturnType13.ts, 42, 11))
|
||||
|
||||
}
|
||||
|
||||
function f4<T extends Cat | Dog>(param: T): // Bad.
|
||||
>f4 : Symbol(f4, Decl(dependentReturnType13.ts, 40, 1))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 42, 12))
|
||||
>Cat : Symbol(Cat, Decl(dependentReturnType13.ts, 35, 1))
|
||||
>Dog : Symbol(Dog, Decl(dependentReturnType13.ts, 31, 1))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 42, 33))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 42, 12))
|
||||
>f4 : Symbol(f4, Decl(dependentReturnType13.ts, 45, 1))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 47, 12))
|
||||
>Cat : Symbol(Cat, Decl(dependentReturnType13.ts, 40, 1))
|
||||
>Dog : Symbol(Dog, Decl(dependentReturnType13.ts, 36, 1))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 47, 33))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 47, 12))
|
||||
|
||||
T extends Cat ? 1 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 42, 12))
|
||||
>Cat : Symbol(Cat, Decl(dependentReturnType13.ts, 35, 1))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 47, 12))
|
||||
>Cat : Symbol(Cat, Decl(dependentReturnType13.ts, 40, 1))
|
||||
|
||||
T extends Dog ? 2 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 42, 12))
|
||||
>Dog : Symbol(Dog, Decl(dependentReturnType13.ts, 31, 1))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 47, 12))
|
||||
>Dog : Symbol(Dog, Decl(dependentReturnType13.ts, 36, 1))
|
||||
|
||||
never {
|
||||
if ('bark' in param) {
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 42, 33))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 47, 33))
|
||||
|
||||
const _: Dog = param;
|
||||
>_ : Symbol(_, Decl(dependentReturnType13.ts, 47, 13))
|
||||
>Dog : Symbol(Dog, Decl(dependentReturnType13.ts, 31, 1))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 42, 33))
|
||||
>_ : Symbol(_, Decl(dependentReturnType13.ts, 52, 13))
|
||||
>Dog : Symbol(Dog, Decl(dependentReturnType13.ts, 36, 1))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 47, 33))
|
||||
|
||||
return 2;
|
||||
}
|
||||
const _: Cat = param;
|
||||
>_ : Symbol(_, Decl(dependentReturnType13.ts, 50, 9))
|
||||
>Cat : Symbol(Cat, Decl(dependentReturnType13.ts, 35, 1))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 42, 33))
|
||||
>_ : Symbol(_, Decl(dependentReturnType13.ts, 55, 9))
|
||||
>Cat : Symbol(Cat, Decl(dependentReturnType13.ts, 40, 1))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 47, 33))
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
function f5<T extends string | number | string[]>(param: T):
|
||||
>f5 : Symbol(f5, Decl(dependentReturnType13.ts, 52, 1))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 54, 12))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 54, 50))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 54, 12))
|
||||
>f5 : Symbol(f5, Decl(dependentReturnType13.ts, 57, 1))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 59, 12))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 59, 50))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 59, 12))
|
||||
|
||||
T extends string ? 1 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 54, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 59, 12))
|
||||
|
||||
T extends number | string[] ? 2 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 54, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 59, 12))
|
||||
|
||||
never {
|
||||
if (Array.isArray(param) || typeof param === "number") {
|
||||
>Array.isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
|
||||
>isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 54, 50))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 54, 50))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 59, 50))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 59, 50))
|
||||
|
||||
const _: string[] | number = param;
|
||||
>_ : Symbol(_, Decl(dependentReturnType13.ts, 59, 13))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 54, 50))
|
||||
>_ : Symbol(_, Decl(dependentReturnType13.ts, 64, 13))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 59, 50))
|
||||
|
||||
return 2;
|
||||
}
|
||||
const _: string = param;
|
||||
>_ : Symbol(_, Decl(dependentReturnType13.ts, 62, 9))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 54, 50))
|
||||
>_ : Symbol(_, Decl(dependentReturnType13.ts, 67, 9))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 59, 50))
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
function f6<T extends string | number[] | string[], U extends boolean>(param: T, other: U):
|
||||
>f6 : Symbol(f6, Decl(dependentReturnType13.ts, 64, 1))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 66, 12))
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 66, 51))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 66, 71))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 66, 12))
|
||||
>other : Symbol(other, Decl(dependentReturnType13.ts, 66, 80))
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 66, 51))
|
||||
>f6 : Symbol(f6, Decl(dependentReturnType13.ts, 69, 1))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 71, 12))
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 71, 51))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 71, 71))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 71, 12))
|
||||
>other : Symbol(other, Decl(dependentReturnType13.ts, 71, 80))
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 71, 51))
|
||||
|
||||
T extends number[] ? 2 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 66, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 71, 12))
|
||||
|
||||
U extends true ?
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 66, 51))
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 71, 51))
|
||||
|
||||
T extends string[] ? 3 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 66, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 71, 12))
|
||||
|
||||
T extends string ? 1 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 66, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 71, 12))
|
||||
|
||||
never :
|
||||
U extends false ?
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 66, 51))
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 71, 51))
|
||||
|
||||
T extends string[] ? 4 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 66, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 71, 12))
|
||||
|
||||
T extends string ? 5 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 66, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 71, 12))
|
||||
|
||||
never :
|
||||
never {
|
||||
if (isNumberArray(param)) {
|
||||
>isNumberArray : Symbol(isNumberArray, Decl(dependentReturnType13.ts, 90, 1))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 66, 71))
|
||||
>isNumberArray : Symbol(isNumberArray, Decl(dependentReturnType13.ts, 20, 1))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 71, 71))
|
||||
|
||||
return 2;
|
||||
}
|
||||
if (other) {
|
||||
>other : Symbol(other, Decl(dependentReturnType13.ts, 66, 80))
|
||||
>other : Symbol(other, Decl(dependentReturnType13.ts, 71, 80))
|
||||
|
||||
if (Array.isArray(param)) {
|
||||
>Array.isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
|
||||
>isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 66, 71))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 71, 71))
|
||||
|
||||
return 3;
|
||||
}
|
||||
@@ -217,45 +228,40 @@ function f6<T extends string | number[] | string[], U extends boolean>(param: T,
|
||||
>Array.isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
|
||||
>isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 66, 71))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 71, 71))
|
||||
|
||||
return 4;
|
||||
}
|
||||
return 5;
|
||||
}
|
||||
|
||||
declare function isNumberArray(x: unknown): x is number[];
|
||||
>isNumberArray : Symbol(isNumberArray, Decl(dependentReturnType13.ts, 90, 1))
|
||||
>x : Symbol(x, Decl(dependentReturnType13.ts, 92, 31))
|
||||
>x : Symbol(x, Decl(dependentReturnType13.ts, 92, 31))
|
||||
|
||||
function f7<T extends string | string[], U extends number | number[]>(param: T, other: U):
|
||||
>f7 : Symbol(f7, Decl(dependentReturnType13.ts, 92, 58))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 94, 12))
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 94, 40))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 94, 70))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 94, 12))
|
||||
>other : Symbol(other, Decl(dependentReturnType13.ts, 94, 79))
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 94, 40))
|
||||
>f7 : Symbol(f7, Decl(dependentReturnType13.ts, 95, 1))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 97, 12))
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 97, 40))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 97, 70))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 97, 12))
|
||||
>other : Symbol(other, Decl(dependentReturnType13.ts, 97, 79))
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 97, 40))
|
||||
|
||||
U extends number ?
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 94, 40))
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 97, 40))
|
||||
|
||||
T extends string[] ? 2 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 94, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 97, 12))
|
||||
|
||||
T extends string ? 1 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 94, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 97, 12))
|
||||
|
||||
never :
|
||||
U extends number[] ?
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 94, 40))
|
||||
>U : Symbol(U, Decl(dependentReturnType13.ts, 97, 40))
|
||||
|
||||
T extends string[] ? 4 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 94, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 97, 12))
|
||||
|
||||
T extends string ? 3 :
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 94, 12))
|
||||
>T : Symbol(T, Decl(dependentReturnType13.ts, 97, 12))
|
||||
|
||||
never :
|
||||
never {
|
||||
@@ -263,13 +269,13 @@ function f7<T extends string | string[], U extends number | number[]>(param: T,
|
||||
>Array.isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
|
||||
>isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>other : Symbol(other, Decl(dependentReturnType13.ts, 94, 79))
|
||||
>other : Symbol(other, Decl(dependentReturnType13.ts, 97, 79))
|
||||
|
||||
if (Array.isArray(param)) {
|
||||
>Array.isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
|
||||
>isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 94, 70))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 97, 70))
|
||||
|
||||
return 4;
|
||||
}
|
||||
@@ -279,7 +285,7 @@ function f7<T extends string | string[], U extends number | number[]>(param: T,
|
||||
>Array.isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
|
||||
>isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 94, 70))
|
||||
>param : Symbol(param, Decl(dependentReturnType13.ts, 97, 70))
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
@@ -63,6 +63,12 @@ function f2<T extends string | string[] | number[]>(param: T):
|
||||
> : ^
|
||||
}
|
||||
|
||||
declare function isNumberArray(x: unknown): x is number[];
|
||||
>isNumberArray : (x: unknown) => x is number[]
|
||||
> : ^ ^^ ^^^^^
|
||||
>x : unknown
|
||||
> : ^^^^^^^
|
||||
|
||||
function f3<T extends string | string[] | number[]>(param: T): // Bad.
|
||||
>f3 : <T extends string | string[] | number[]>(param: T) => T extends string ? 1 : T extends string[] ? 2 : T extends number[] ? 3 : never
|
||||
> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^
|
||||
@@ -73,6 +79,18 @@ function f3<T extends string | string[] | number[]>(param: T): // Bad.
|
||||
T extends string[] ? 2 :
|
||||
T extends number[] ? 3 :
|
||||
never {
|
||||
if (isNumberArray(param)) {
|
||||
>isNumberArray(param) : boolean
|
||||
> : ^^^^^^^
|
||||
>isNumberArray : (x: unknown) => x is number[]
|
||||
> : ^ ^^ ^^^^^
|
||||
>param : string | string[] | number[]
|
||||
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
return 3;
|
||||
>3 : 3
|
||||
> : ^
|
||||
}
|
||||
if (Array.isArray(param)) {
|
||||
>Array.isArray(param) : boolean
|
||||
> : ^^^^^^^
|
||||
@@ -82,8 +100,8 @@ function f3<T extends string | string[] | number[]>(param: T): // Bad.
|
||||
> : ^^^^^^^^^^^^^^^^
|
||||
>isArray : (arg: any) => arg is any[]
|
||||
> : ^ ^^ ^^^^^
|
||||
>param : string | string[] | number[]
|
||||
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
>param : string | string[]
|
||||
> : ^^^^^^^^^^^^^^^^^
|
||||
|
||||
return 2;
|
||||
>2 : 2
|
||||
@@ -284,12 +302,6 @@ function f6<T extends string | number[] | string[], U extends boolean>(param: T,
|
||||
> : ^
|
||||
}
|
||||
|
||||
declare function isNumberArray(x: unknown): x is number[];
|
||||
>isNumberArray : (x: unknown) => x is number[]
|
||||
> : ^ ^^ ^^^^^
|
||||
>x : unknown
|
||||
> : ^^^^^^^
|
||||
|
||||
function f7<T extends string | string[], U extends number | number[]>(param: T, other: U):
|
||||
>f7 : <T extends string | string[], U extends number | number[]>(param: T, other: U) => U extends number ? T extends string[] ? 2 : T extends string ? 1 : never : U extends number[] ? T extends string[] ? 4 : T extends string ? 3 : never : never
|
||||
> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^
|
||||
|
||||
@@ -24,11 +24,16 @@ function f2<T extends string | string[] | number[]>(param: T):
|
||||
return 1;
|
||||
}
|
||||
|
||||
declare function isNumberArray(x: unknown): x is number[];
|
||||
|
||||
function f3<T extends string | string[] | number[]>(param: T): // Bad.
|
||||
T extends string ? 1 :
|
||||
T extends string[] ? 2 :
|
||||
T extends number[] ? 3 :
|
||||
never {
|
||||
if (isNumberArray(param)) {
|
||||
return 3;
|
||||
}
|
||||
if (Array.isArray(param)) {
|
||||
return 2;
|
||||
}
|
||||
@@ -94,8 +99,6 @@ function f6<T extends string | number[] | string[], U extends boolean>(param: T,
|
||||
return 5;
|
||||
}
|
||||
|
||||
declare function isNumberArray(x: unknown): x is number[];
|
||||
|
||||
function f7<T extends string | string[], U extends number | number[]>(param: T, other: U):
|
||||
U extends number ?
|
||||
T extends string[] ? 2 :
|
||||
|
||||
Reference in New Issue
Block a user