File: unionWithIndexSignature.types

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 (62 lines) | stat: -rw-r--r-- 1,461 bytes parent folder | download | duplicates (2)
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
=== tests/cases/compiler/unionWithIndexSignature.ts ===
interface NumList {
  kind: 'n';
>kind : "n"

  [x: number]: number;
>x : number
}
interface StrList {
  kind: 's';
>kind : "s"

  [x: number]: string;
>x : number
}

export function foo<T extends NumList | StrList>(arr: T & (NumList | StrList)) {
>foo : <T extends NumList | StrList>(arr: T & (NumList | StrList)) => void
>arr : T & (NumList | StrList)

  let zz = arr[1];  // Error
>zz : string | number
>arr[1] : string | number
>arr : NumList | StrList
>1 : 1
}

// Repro from #38102

export type TypedArray = Int32Array | Uint8Array;
>TypedArray : Int32Array | Uint8Array

export function isTypedArray(a: {}): a is Int32Array | Uint8Array {
>isTypedArray : (a: {}) => a is Int32Array | Uint8Array
>a : {}

  return a instanceof Int32Array || a instanceof Uint8Array;
>a instanceof Int32Array || a instanceof Uint8Array : boolean
>a instanceof Int32Array : boolean
>a : {}
>Int32Array : Int32ArrayConstructor
>a instanceof Uint8Array : boolean
>a : {}
>Uint8Array : Uint8ArrayConstructor
}

export function flatten<T extends number|TypedArray>(arr: T) {
>flatten : <T extends number | TypedArray>(arr: T) => void
>arr : T

  if (isTypedArray(arr)) {
>isTypedArray(arr) : boolean
>isTypedArray : (a: {}) => a is Int32Array | Uint8Array
>arr : number | TypedArray

      arr[1];
>arr[1] : number
>arr : Int32Array | Uint8Array
>1 : 1
  }
}