为啥在打字稿中用方括号括起来的名称声明方法?
Posted
技术标签:
【中文标题】为啥在打字稿中用方括号括起来的名称声明方法?【英文标题】:why declare method within square brackets wrapped around name in typescript?为什么在打字稿中用方括号括起来的名称声明方法? 【发布时间】:2017-12-05 09:39:59 【问题描述】:我一直在浏览 nativescript 代码库,以了解如何为 N 3.0.1 更新我的一些插件,并且我看到了很多这样的类方法。
[srcProperty.setNative](value: any)
this._createImageSourceFromSrc(value);
查看image-common.ts 和image.android.ts 的内容以查看完整源代码。
为什么从 image-common.ts 导出的 const 的属性在 image.android.ts 方法中使用,为什么它们用方括号括起来?
【问题讨论】:
【参考方案1】:它会在该类的原型上生成一个具有计算名称的属性。
虽然不是很使用这个完全有效的 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。
【讨论】:
这是非常不寻常的,我也是第一次看到它,但它是有道理的。从语法的角度来看。 确实如此。只是一开始没有这么想以上是关于为啥在打字稿中用方括号括起来的名称声明方法?的主要内容,如果未能解决你的问题,请参考以下文章
PHP:为啥用括号括起来的函数调用会阻止“通过引用”通知? [复制]