提问人:kwyntes 提问时间:6/5/2023 更新时间:6/5/2023 访问量:36
说服 TypeScript 类型也可以是未定义的
Convincing TypeScript a type can be undefined as well
问:
必须告诉 TypeScript 某些值肯定存在并且不会存在是很常见的。然而,这几乎从来都不是相反的——不得不说服 TypeScript 相信它实际上对类型的定义性过于自信。undefined
命运多舛,我遇到过一个这样的案例。
const listA = document.querySelector(...);
const listB = document.querySelector(...);
while (listA.children.length > 0 || listB.children.length > 0) {
const itemA: HTMLElement | undefined = listA.children[0] as any;
const itemB: HTMLElement | undefined = listB.children[0] as any;
// ...
}
在此示例中,只要两个列表中至少有一个仍包含元素,循环就会继续。这意味着,如果两个列表中的任何一个是空的,而另一个不是,则 EITHER 或 将是 。然而,TypeScript 似乎无法理解这些事情。它似乎把心思放在了两个变量上,并且拒绝听取任何不这么说的人。while
itemA
itemB
undefined
HTMLElement
绝望的是,我什至尝试了这条线
const itemA: HTMLElement | undefined = listA.children[0] as any as HTMLElement | undefined;
但这毫无用处。
有没有办法让 TypeScript 承认项目的潜力?undefined
答: 暂无答案
下一个:如何将模板类型修改为无符号?
评论
Element | null
null
div
querySelector
listA
listB
null
itemA
itemB
undefined