小编Cho*_*hor的帖子

在打字稿手册中,提前生成实际上意味着什么?

打字稿手册模板文字类型中,它说:

对于模板文字中的每个插值位置,并集被交叉相乘:

type AllLocaleIDs = `${EmailLocaleIDs | FooterLocaleIDs}_id`;
type Lang = "en" | "ja" | "pt"; 
type LocaleMessageIDs = `${Lang}_${AllLocaleIDs}`;
Run Code Online (Sandbox Code Playgroud)

然后它说:

我们通常建议人们对大型字符串联合使用提前生成,但这在较小的情况下很有用。

但什么是“超前一代”?最后一段是什么意思?我不太明白,因为他没有举例。

typescript

9
推荐指数
1
解决办法
518
查看次数

重新渲染后调用 ref 回调时,React 如何清除旧的 ref?

正如 React 文档提到的

如果 ref 回调被定义为内联函数,则在更新期间它将被调用两次,第一次使用 null,然后再次使用 DOM 元素。这是因为每次渲染都会创建该函数的新实例,因此 React 需要清除旧的引用并设置新的引用。

我可以理解设置elnull,因为我们需要在重新渲染后释放旧 dom 节点的内存。但是,有两个问题我仍然无法弄清楚。

  1. 为什么 React 必须首先在这里调用旧的 ref 回调null?难道它不能用新的 dom 节点调用较新的 ref 回调吗?
  2. React 如何清除旧的引用?这与两次调用 ref 回调有关吗?

reactjs react-hooks

7
推荐指数
1
解决办法
2089
查看次数

为什么在这段代码片段中箭头函数的外部作用域是“showList”而不是“forEach”?

下面是这个现代 JavaScript 教程的代码片段:

let group = {
  title: "Our Group",
  students: ["John", "Pete", "Alice"],

  showList() {
    this.students.forEach(
      student => alert(this.title + ': ' + student)
    );
  }
};

group.showList();
Run Code Online (Sandbox Code Playgroud)

本教程尝试this用箭头函数进行解释,它说:

这里的forEach中,使用了箭头函数,因此this.title与外部方法showList中的完全相同。即:group.title。

我们知道this箭头函数是按词法确定的。所以作用域链应该是:

global--> showList-->forEach-->arrow function
Run Code Online (Sandbox Code Playgroud)

在这种情况下,箭头函数的外部作用域应该forEach代替showList。因此thisin 箭头函数与 in 完全相同forEach,这应该是undefined因为没有thisArg传递 to forEach。但事实上,thisgroup,这意味着它与 中完全相同showList。那么,在这种情况下似乎forEach没有范围?我很困惑。

javascript this

5
推荐指数
1
解决办法
2656
查看次数

为什么交集类型不是几种类型的交集?

根据交集的定义,几种类型的交集应该产生一个类型,该类型的属性对于所有类型来说都是公共的。例如,如果我们有:

type o1 = {a: string, b: string}
type o2 = {a: string, c: string}
type o3 = o1 & o2
Run Code Online (Sandbox Code Playgroud)

theno3应该是一个仅具有属性的类型,a因为是和a的公共属性。然而,我们实际上得到的是一个具有属性、和 的类型。在这种情况下,交集类型的行为似乎并不像其名称所显示的那样。它的作用更像是所有类型的组合。那么交叉口类型真的与交叉口有关吗?如果不是,为什么我们称其为交集类型而不是组合类型或其他名称?o1o2abc

typescript

5
推荐指数
0
解决办法
879
查看次数

标签 统计

typescript ×2

javascript ×1

react-hooks ×1

reactjs ×1

this ×1