Chrome控制台中奇怪的“ e”或“ t”表示什么

时间:2018-10-24 13:34:13

标签: javascript google-chrome-devtools javascript-objects typescript3.0

我正在尝试调试TypeScript 3.1,Babel 7和Webpack 4所遇到的怪异问题,这些问题仅在手动构建对象时才起作用。这是一个示例(伪代码):

B (请参见下面的img)

const objectOfObjects = {...}
const someKeys = ['key1', 'key2', 'key3']

someKeys.filter(key => {
  const i = new Foo(objectOfObjects[key]['somePropName'], /* subsequent props */);
  console.log(i); // when I inspect the object here values are set correctly
  return predicate(i);
});

但是,我不必为每个属性手动输入objectOfObjects[key]['somePropName'],而只是传递给定TypeScript接口的对象,并将其传递给构造函数,并使其成为Object.assign。

A (请参见下面的img)

const objectOfObjects = {...}
const someKeys = ['key1', 'key2', 'key3']

someKeys.filter(key => {
  const i = new Foo(objectOfObjects[key]);
  console.log(i) // this does also return and object, but with all props undefined
  return predicate(i);
});

Foo扩展了以下基类

class FooBase {
  constructor(o: IFoo) {
    if (o) {
      Object.assign(this, o);
    }
  }
}

当我举一个非常简单的示例时,它似乎正在工作,但是无论如何,当我在真实应用程序中将objectOfObjects[key]传递给Foo的构造函数时,我会得到:

enter image description here

当我遍历它并尝试查找objectOfObjects[key]中的更改时,我能想到的唯一区别是我在上图中突出显示的内容–只是在chrome控制台中对象的左侧。我无法从Google搜索中找到任何文档,因此希望你们中的一个知道它的意思,并希望它也可以表明我在这里做错了。

2 个答案:

答案 0 :(得分:0)

在不知道--to=to Version up to which to apply migrations. Only available with a single package being updated, and only on migrations only. Requires from to be specified. Default to the installed version detected. 是什么的情况下很难说出来,但是这些似乎是您记录的对象内的属性名称。当将您的代码编译成JavaScript时,TypeScript编译器会生成类似的属性。

答案 1 :(得分:0)

就像特德·霍普(Ted Hopp)所说的那样,很难从您提供的小片段中分辨出发生了什么。

我认为在A中,您只有f t(e)的构造函数,因为它是从IFoo复制的构造函数,这是由于引用引用是平坦的。

Object.assign()仅进行平面复制,并且忽略所有undefinednull值。也许可以快速检查一下:由于您正在调用const i = new Foo(objectOfObjects[key]);,因此对象objectOfObjects[key]必须是IFoo并且需要具有所有值,因此您想平面复制。

由于在调试器中完成了对象展开的工作,因此您可以尝试在该处找到一个断点,然后再次检查对象真正包含的内容。

老实说,这些只是猜测,我以后可能会删除此答案。