【问题标题】:Set property of a class using a variable使用变量设置类的属性
【发布时间】:2019-07-25 07:50:29
【问题描述】:

这样的事情可能吗?

const propName = "x";

class A {
    static propName = 1
    // equivalent to static x = 1
}

A[propName] // evaluates to 1

还是(typeof A)[propName]


出于显而易见的原因,这不是this question的副本

【问题讨论】:

  • @PatrickRoberts 你读过这个问题吗?它与您标记为重复的完全不同...
  • 我阅读了这个问题。没有名为x 的属性,只有一个名为propName 的属性。所以要么A.propName要么const propName = "propName";
  • @PatrickRoberts 你应该重新打开这个问题。我不知道你为什么认为其他问题甚至是相关的 - 它甚至不是 TypeScript
  • 这不等于static x = 1,仅供参考。 static propName = 1 的含义不会因为字符串变量propName 的存在而改变。

标签: javascript typescript class ecmascript-6


【解决方案1】:

这是可能的,就像:

const propName = "x";

class A {
    static [propName] = 1
    // equivalent to static x = 1
}

A[propName]

【讨论】:

  • 1) 不要以为是我投反对票。 2) 无论x 是否存在于A 上,A[propName] 都会编译。自己试试。这不是类型安全的,请参阅this
  • Yes
  • 这个答案是正确的;它使用computed properties,只要属性的值静态地称为文字类型,TypeScript 就可以理解它(所以let propName = "x"; 会失败,因为propName 将是string)。
  • 至于A[propName] 编译x 是否存在于A:你会收到--strict--noImplicitAny 模式的警告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
相关资源
最近更新 更多