-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Closed
Labels
BugA bug in TypeScriptA bug in TypeScriptFixedA PR has been merged for this issueA PR has been merged for this issue
Milestone
Description
TypeScript Version: nightly
Code
function f1<K extends string, T>(obj: { [P in K]: T }, k: K) {
const b = k in obj; // Error
let k1: K;
for (k1 in obj) { // Error
let x1 = obj[k1]; // Error
}
for (let k2 in obj) {
let x2 = obj[k2]; // Error
}
}
function f2<T>(obj: { [P in keyof T]: T[P] }, k: keyof T) {
const b = k in obj;
let k1: keyof T;
for (k1 in obj) {
let x1 = obj[k1];
}
for (let k2 in obj) {
let x2 = obj[k2];
}
}
function f3<T, K extends keyof T>(obj: { [P in K]: T[P] }, k: K) {
const b = k in obj; // Error
let k1: K;
for (k1 in obj) { // Error
let x1 = obj[k1];
}
for (let k2 in obj) {
let x2 = obj[k2]; // Error
}
}Expected behavior:
No errors.
Actual behavior:
Multiple errors as indicated in example.
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScriptFixedA PR has been merged for this issueA PR has been merged for this issue