问答

TypeScript let 作用域问题

作者:admin 2021-09-09 我要评论

如下, 1.hasOwnProperty(id)判断有没有id, 与let id in first 里的id,有关系吗 ? 2.如果result[id]已经存在,则不赋值.实际举例: 更正: first = [1,2,3] second =...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

如下,
1.hasOwnProperty(id)判断有没有id, 与let id in first 里的id,有关系吗 ?
2.如果result[id]已经存在,则不赋值.实际举例:

更正:
first = [1,2,3]
second = [3,4,5]
执行程序后,
console.log(result)输出如下:
{ '0': 1, '1': 2, '2': 3 }

function extend<T, U>(first: T, second: U): T & U {
    let result = {} as T & U

    for (let id in first) {               //
        result[id] = first[id] as any
    }

    for (let id in second) {            //
        if (!result.hasOwnProperty(id)) {  
            result[id] = second[id] as any
        }
    }

    return result
}
###

1、没懂你说的“有关系”指的是什么?hasOwnPorperty 只检测非继承成员,而 for ... in 是包含继承成员的(继承属性你可以近似理解为原型链上的成员)。


2、你这段代码的用途是聚合 firstsecond 两个对象里的成员,并且如果相同的 key 同时存在于 firstsecond 两者中,则以 first 的为准。有点儿像反过来的 Object.assign()


补充回答见评论区。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • TypeScript let 作用域问题

    TypeScript let 作用域问题

  • 类似三目运算, obj?.name  。请教下这

    类似三目运算, obj?.name 。请教下这

  • 循环语句得到数据后保存csv只有最后一

    循环语句得到数据后保存csv只有最后一

  • electron 热更新(迭代更新)

    electron 热更新(迭代更新)

腾讯云代理商
海外云服务器