File: inferenceShouldFailOnEvolvingArrays.errors.txt

package info (click to toggle)
node-typescript 4.9.5%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 533,908 kB
  • sloc: javascript: 2,018,330; makefile: 7; sh: 1
file content (36 lines) | stat: -rw-r--r-- 2,112 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
tests/cases/compiler/inferenceShouldFailOnEvolvingArrays.ts(7,11): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
tests/cases/compiler/inferenceShouldFailOnEvolvingArrays.ts(9,15): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
tests/cases/compiler/inferenceShouldFailOnEvolvingArrays.ts(15,17): error TS2322: Type 'number' is not assignable to type 'string'.
tests/cases/compiler/inferenceShouldFailOnEvolvingArrays.ts(17,19): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
tests/cases/compiler/inferenceShouldFailOnEvolvingArrays.ts(18,22): error TS2322: Type 'number' is not assignable to type 'string'.


==== tests/cases/compiler/inferenceShouldFailOnEvolvingArrays.ts (5 errors) ====
    // repro from https://github.com/Microsoft/TypeScript/issues/25675
    // The type of `arg` blocks inference but simplifies to T.
    function logLength<T extends string, U extends string>(arg: { [K in U]: T }[U]): T {
        console.log(arg.length);
        return arg;
    }
    logLength(42);  // error
              ~~
!!! error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
    let z;
    z = logLength(42);  // no error; T is inferred as `any`
                  ~~
!!! error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
    
    function logFirstLength<T extends string[], U extends string>(arg: { [K in U]: T }[U]): T {
        console.log(arg[0].length);
        return arg;
    }
    logFirstLength([42]);  // error
                    ~~
!!! error TS2322: Type 'number' is not assignable to type 'string'.
    let zz = [];
    zz.push(logLength(42));  // no error; T is inferred as `any`
                      ~~
!!! error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
    zz = logFirstLength([42]);  // no error; T is inferred as `any[]`
                         ~~
!!! error TS2322: Type 'number' is not assignable to type 'string'.