【问题标题】:A question about typescript symbol as a object property identifier关于 typescript 符号作为对象属性标识符的问题
【发布时间】:2019-11-05 00:35:16
【问题描述】:
peng@neo-laptop:~/ts-learnings$ tsc --version
Version 3.6.4

虽然代码sn-p是这样的:


const sym = Symbol('foo');

let o = {
    name: "Jessie Tom",
    age: 35
};

function extendObject(obj: any, sym: symbol, value: any) {
    obj[sym] = value;
}

extendObject(o, sym, 42);

console.log(Object.keys(o));

得到结果:

[
  "name",
  "age"
]

问题是sym 不是对象键。为什么?

【问题讨论】:

    标签: typescript object key symbols


    【解决方案1】:

    这就是 Object.keys 的工作原理。它不返回符号。如果需要符号,请使用 Object.getOwnPropertySymbols

    const sym = Symbol('foo');
    
    let o = {
        name: "Jessie Tom",
        age: 35,
    };
    
    function extendObject(obj, sym, value) {
        obj[sym] = value;
    }
    
    extendObject(o, sym, 42);
    
    console.log(Object.keys(o));
    const symbols = Object.getOwnPropertySymbols(o)
    console.log(symbols);
    console.log(o[symbols[0]]);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多