null; [name: string]: any } class ControlTag { tagSource: String

问题描述 投票:0回答:1

我有一个typescript类,它接受任何成员名。

interface ControlTagType {
    type?: String | null;

    [name: string]: any
}

class ControlTag {
    tagSource: String | null = null;

    tag: ControlTagType | null = null;
}

export { ControlTag };

这样我就可以在vuejs中使用这个类,如下所示。

controlTag.push({ tagSource: 'USER', tag: { type: 'X', TAG_1: 'TAG_X' } });
controlTag.push({ tagSource: 'AUTO', tag: { type: 'Y', TAG_2: 'TAG_Y' } });

这是我另一个问题的唯一解决方案。

但我找不到如何在kotlin中实现这种通用成员。

我有一个枚举类,我在序列化时使用了这个类。

  @JsonValue
  fun value(): X {
    return X( this.name : this.name)
  }

例如

data class X(val [name: string]: any)

我可以按照下面的方法来做,但是太复杂了,应该为每个类做。

 @JsonValue
  fun value(): Any? {
    when (this.name) {
      XX_XX.name -> {
        return object {
          var XX_XX: String = name
        }
      }
      YY_YY.name -> {
        return object {
          var YY_YY: String = name
        }
      }
      ZZ_ZZ.name -> {
        return object {
          var ZZ_ZZ: String = name
        }
      }
      else -> return null
    }
  }

而且在这个实现中,它将参数名转换为小写。

{"type":"XX","xx_XX":"XX_XX"}
java typescript variables generics kotlin
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.