是什么=比;脚本类型中的[var]

2022-01-30 15:02:35 标签 typescript

我从angular 4。2(“typescript”:“~2。3。3”)迁移到angular 12(“typescript”:“~4。3。2”),只是不知道它是什么类型的语法。

在=>这(layerVar)

Angular 12中使用了更现代的类型脚本,如果我将参数类型设置为=>layerVar一样

如果我不说任何类型

drawOnMap(feature, radius, isArray, layerVar = null, style = null) {
    layerVar = layerVar || 'myLayer'
    style = style || this.myStyle
    if (!isArray && feature.geometry.type.includes("Multi")) {
      feature.properties = { gid: 123 };
      let features = [feature];
      this[layerVar] = new L.geoJson(features, {
        style: style,
      })
        .addTo(this.map);
    } else if (!isArray && feature.geometry.type == "Point" && radius) {
      this[layerVar] = new L.geoJson(feature, {
        pointToLayer: (feature2, latlng) => {
          return new L.Circle(latlng, radius);
        },
      })
        .addTo(this.map);
    } else if (
      (!isArray && feature.geometry.type == "Point")
      || (feature[0] && feature[0].type == "Point")
    ) {
      this[layerVar] = new L.geoJson(feature, {
        pointToLayer: (feature2, latlng) => {
          return new L.Marker(latlng, { draggable: false });
        },
      })
        .addTo(this.map);
    } else {
      this[layerVar] = new L.geoJson(feature, {
        style: style,
      })
        .addTo(this.map);
    }
  }

# # #=> this[layerVar] is no本身不是法律语法。它只是作为箭头匿名函数字面量的一部分才有意义,就像这样:

layerVar => this[layerVar]

不幸的是,从你的问题中,并不能100%清楚你在纠结于语法的哪一部分,所以我将一一解释:

foo => bar

这是一个箭头匿名函数。不幸的是,这方面的TypeScript文档非常糟糕,特别是在语法方面,也就是你所讨论的语法方面。下面是ECMAScript的语法规范,这是TypeScript的灵感来源,但它显然不包括类型注释的语法:

ArrowFunction [In Yield Await]:

??ArrowParameters [?Yield ?Await][这里没有LineTerminator]=> ConciseBody [?In]ConciseBody [?在)

ArrowParameters [Yield Await]:

??BindingIdentifier [?收益率?等待]< br / >

??CoverParenthesizedExpressionAndArrowParameterList [?收益率?等待)

ConciseBody [In]:

??(超前≠{] ExpressionBody] ExpressionBody [?~等待)

{ FunctionBody [~Yield, ~Await] }

ExpressionBody [In Await]:

??AssignmentExpression [?在~收益率?等待)

this

这是This关键字。同样,我在TypeScript中找不到任何关于this关键字的文档(事实上,我根本找不到任何全面的TypeScript语法文档),所以下面是在ECMAScript中的定义:

PrimaryExpression [Yield Await]:

??this

(我知道这不是很令人兴奋。嘿,这是一个关键字,你期望什么。)

foo[bar]

这是一个索引属性访问。不幸的是,在TypeScript中也没有关于这方面的文档。(实际上根本没有关于TypeScript运行时语义、语句语法或表达式语法的文档,因为它们与ECMAScript完全相同,而且假设TypeScript程序员了解ECMAScript。只有关于类型语法和类型语义的文档。)

ECMAScript的语法文档在这里:

MemberExpression [Yield Await]:

??MemberExpression [?收益率?等待)[ Expression[+In ?Yield ?Await] ]

layerVar

这只是一个标识符引用。

这就是构成你所询问的片段的四个语法元素。

# # #设置layervar='mylayer' as a parameter i作为函数中的参数。

这意味着如果layervar的值为空,当函数被调用时,它将默认为'mylayer'。

类型也将是字符串。因为Typescript根据默认值猜测了类型。

drawOnMap(feature, radius, isArray, layerVar = 'mylayer', style = null) { ...

然后删除这一行:

layerVar = layerVar || 'myLayer'
阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码