为什么声明方括号内的方法缠绕在typescript中的名字?

时间:2017-07-01 16:37:16

标签: typescript nativescript nativescript-plugin

我一直在浏览 nativescript 代码库,看看如何为{N} 3.0.1更新我的一些插件,我用这种方式看到了很多类方法。

[srcProperty.setNative](value: any) {
    this._createImageSourceFromSrc(value);
}

查看image-common.tsimage.android.ts的内容以查看完整的来源。

为什么 image.android.ts 中的 image-common.ts 导出的const的属性是一种方法,为什么它们用方括号括起来?

1 个答案:

答案 0 :(得分:3)

它会在该类的原型上生成一个带有计算名称的属性。

虽然没有很好地使用这个完全有效的javascript /打字稿代码。它确实会导致一些打字丢失。

此打字稿代码:

let propName = 'someMethod';

class A {
  [propName](): number {
    console.log(propName);
    return 5;
  }
}

let a = new A();

let x = a[propName]()

将导致此javascript输出。

var propName = 'someMethod';
var A = (function () {
    function A() {
    }
    A.prototype[propName] = function () {
        console.log(propName);
        return 5;
    };
    return A;
}());
var a = new A();
var x = a[propName]();

您可以看到一个有效的例子here