File: indexSignatureTypeInference.js

package info (click to toggle)
node-typescript 5.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 497,488 kB
  • sloc: javascript: 2,107,274; makefile: 6; sh: 1
file content (32 lines) | stat: -rw-r--r-- 953 bytes parent folder | download
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
//// [tests/cases/conformance/types/typeRelationships/typeInference/indexSignatureTypeInference.ts] ////

//// [indexSignatureTypeInference.ts]
interface NumberMap<T> {
    [index: number]: T;
}

interface StringMap<T> {
    [index: string]: T;
}

declare function numberMapToArray<T>(object: NumberMap<T>): T[];
declare function stringMapToArray<T>(object: StringMap<T>): T[];

var numberMap: NumberMap<Function>;
var stringMap: StringMap<Function>;

var v1: Function[];
var v1 = numberMapToArray(numberMap);  // Ok
var v1 = numberMapToArray(stringMap);  // Ok
var v1 = stringMapToArray(numberMap);  // Error expected here
var v1 = stringMapToArray(stringMap);  // Ok


//// [indexSignatureTypeInference.js]
var numberMap;
var stringMap;
var v1;
var v1 = numberMapToArray(numberMap); // Ok
var v1 = numberMapToArray(stringMap); // Ok
var v1 = stringMapToArray(numberMap); // Error expected here
var v1 = stringMapToArray(stringMap); // Ok