Microsoft/TypeScript

Type Inference in for... in combined with typeof

Open

#12,944 opened on Dec 15, 2016

View on GitHub
 (1 comment) (0 reactions) (0 assignees)TypeScript (6,726 forks)batch import
Help WantedSuggestion

Repository metrics

Stars
 (48,455 stars)
PR merge metrics
 (Avg merge 6d 17h) (9 merged PRs in 30d)

Description

TypeScript Version: 2.1.4

The following code gives an error in TS 2.1: It's not really nice code, but I think it should work never the less :)

for (var a in this) {
            if (typeof this[a] === "function" && !ko.isObservable(this[a]))
                this[a] = this[a].bind(this);
        }

Expected behavior: I would expect this[a] to be typed as this[keyof this] & Function:

for (var a in this) {
            if (typeof this[a] === "function" && !ko.isObservable(this[a]))
                this[a] =( <this[keyof this] & Function> this[a]).bind(this);
        }

Actual behavior: It gives an error, as of TS 2.1, it worked in TS 2.0 (because mapped types did not exist, this[a] was typed as any)

Contributor guide