Microsoft/TypeScript

Type Inference in for... in combined with typeof

Open

#12,944 建立於 2016年12月15日

在 GitHub 查看
 (1 留言) (0 反應) (0 負責人)TypeScript (48,455 star) (6,726 fork)batch import
Help WantedSuggestion

描述

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)

貢獻者指南