将TKO / Knockout.js重新映射回ES3或ES5以兼容IE9, tko.binding.if/src/ifNotWith.js这里遇到错误:
class ConditionalBindingHandler extends AsyncBindingHandler {
...
get shouldDisplayIf () { return !!unwrap(this.value) }
...
}
export class UnlessBindingHandler extends ConditionalBindingHandler {
get shouldDisplayIf () { return !super.shouldDisplayIf }
}
在运行Typescript之后出现此错误,因为Typescript将super.shouldDisplayIf
更改为super.prototype.shouldDisplayIf
,这会更改this
引用。
它应该做什么(获取,但设置类似)是这样的:
p = Object.getOwnPropertyDescriptor(super, 'shouldDisplayIf')
return 'get' in p ? p.get.call(this) || p.value
......但事实并非如此。这是一个已知的Typescript问题,还是我错过了什么?
我能找到的唯一相关问题是:https://github.com/Microsoft/TypeScript/issues/338
答案 0 :(得分:1)
这似乎是微软的WONTFIX:
RyanCavanaugh于2017年11月27日发表评论
长话短说 - 经过五年没有这个以及人们幸存下来之后,似乎ES6的采用速度足够快,以至于那些以ES5为目标的人的狭窄窗口(而不是3代表最大的竞争,或者6代表最小的发射delta)正在接近我们此时不想接受大块辅助发射的程度。对数据开放,但它似乎不足以保证发射器发生重大变化。