为什么在打字稿中用方括号括起名称来声明方法?
why declare method within square brackets wrapped around name in typescript?
我一直在研究 nativescript 代码库,看看如何为 {N} 3.0.1 更新我的一些插件,我看到了很多 class 这样的方法。
[srcProperty.setNative](value: any) {
this._createImageSourceFromSrc(value);
}
查看 image-common.ts and image.android.ts 的内容以查看完整源代码。
为什么 image-common.ts 导出的常量的属性用在 image.android.ts 方法中, 为什么用方括号括起来?
它在那个 class 的原型上生成一个 属性 和 计算名称 。
虽然没有很好地使用这个完全有效的 javascript/typescript 代码。不过,它确实会导致一些输入丢失。
此打字稿代码:
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。
我一直在研究 nativescript 代码库,看看如何为 {N} 3.0.1 更新我的一些插件,我看到了很多 class 这样的方法。
[srcProperty.setNative](value: any) {
this._createImageSourceFromSrc(value);
}
查看 image-common.ts and image.android.ts 的内容以查看完整源代码。
为什么 image-common.ts 导出的常量的属性用在 image.android.ts 方法中, 为什么用方括号括起来?
它在那个 class 的原型上生成一个 属性 和 计算名称 。
虽然没有很好地使用这个完全有效的 javascript/typescript 代码。不过,它确实会导致一些输入丢失。
此打字稿代码:
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。