File: extractInferenceImprovement.ts

package info (click to toggle)
node-typescript 3.3.3333-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 324,548 kB
  • sloc: makefile: 6; sh: 3
file content (29 lines) | stat: -rw-r--r-- 646 bytes parent folder | download | duplicates (5)
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
// @target: es6
// repro mostly from https://github.com/Microsoft/TypeScript/issues/25065
function getProperty2<T, K extends keyof T>(obj: T, key: Extract<K, string>): T[K] {
    return obj[key];
}

function getProperty3<T, K extends Extract<keyof T, string>>(obj: T, key: K): T[K] {
    return obj[key];
}

const s = Symbol();
interface StrNum {
    first: string;
    second: number;
    [s]: string;
}
const obj: StrNum = {} as any;

let prop: string;

// should work
prop = getProperty2(obj, 'first');

prop = getProperty3(obj, 'first');

// Should fail
prop = getProperty2(obj, s);

prop = getProperty3(obj, s);