VSCode代码段:将多个对象添加到JS构造函数

时间:2019-01-01 19:17:17

标签: visual-studio-code vscode-extensions

我正在尝试创建一个简单的代码段,以允许我创建JS构造函数。到目前为止,我拥有的是

"class constructor": {
    "prefix": "class",
    "body": [
        "class ${1:ClassName} {",
            "\t\tconstructor({${2:thisName}: ${2}}) {",
                "\t\t\tthis.${2} = ${2}",
            "\t}",
        "}"
    ],
    "description": "class constructor template"
},

这按预期工作,但是我试图查看是否可以添加多个条目,这也为this创建了新行,但是在这种情况下,代码段运行的是我填写的课程$2{thisName}的详细信息。我希望能够添加多个键值对。

因此,它的结尾不是:

class ClassName {
constructor({ thisName:  thisName}) {
  this. thisName =  thisName

} }

我希望能够添加其他项目,使其看起来像;在其中自动创建this.another = another的新行。

class ClassName {
constructor({ thisName:  thisName, another: another}) {
  this. thisName = thisName
  this.another = another // this is create

} }

${3}..在这里不起作用,因为可能有n个项目。

1 个答案:

答案 0 :(得分:0)

尝试一下:

"class constructor": {
  "prefix": "class",
  "body": [

    "class ${1:ClassName} {",
          "\t\tconstructor({${2/([^,]+)([,\\s]*|)/$1: $1${2:+, }/g}}) {",
          "${2/([^,]+)([,\\s]*|)/\t\t\tthis.$1 = $1${2:+\n}/g}",
          "\t}",
      "}"
  ],
  "description": "class constructor template"
},

snippet with multiple call arguments

有关更多说明,请参见我在Make a vscode snippet that can use a variable number of arguments上的回答。

只要在同一正则表达式捕获组中捕获它们,就可以在代码段中使用任意数量的参数-这里的每个arg都在捕获组$ 1中。

然后每个被替换!根据您的情况,第二次\t\t\tthis.$1 = $1${2:+\n。在选项卡之后,捕获组用于this.$1 = $1

然后检查捕获组2 ${2:+, }。它要么带有,,要么没有。如果有内容,请添加\n,否则将不添加任何内容。

要使此正则表达式正常工作,您应将args输入为

arg1, arg2, arg3, arg4

-带逗号分隔符(逗号后面有空格)。在您的最后一个参数之后,按下tab以触发摘要转换。