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)

贡献者指南

Type Inference in for... in combined with typeof · Microsoft/TypeScript#12944 | Good First Issue