javascript - 如何处理查询中字符串类型的打字稿错误
问题描述
我有一个这样的查询:
document.querySelectorAll("h2, h3").forEach(header => {
tmpNav.push({name: header.textContent || header.innerHTML, id: header.id, type: header.nodeName});
})
通过这个接口输入的内容:
interface IContent {
name: string,
id: string,
type: "H3" | "H2"
}
我有一个循环遍历tmpNav
数组并显示数据,在某些时候我使用来自的类型tmpNav
插入基于它的类(jss):
className={classes[type]}
我面临的问题是当我创建这个数组时,type: header.nodeName
抛出一个类型错误,因为它返回一个与类型匹配的字符串type: "H3" | "H2"
添加它string
会导致我classes[type]
抛出错误,因为它与该类型不匹配。
我不确定该怎么做。我一直都知道数组会使用其中一种类型,header.nodeName
因为它只是一个querySelector
for "h2, h3"
。
解决方案
更合适的解决方案是使用条件值检查来缩小类型header.nodeName
if (header.nodeName === 'H3' || header.nodeName === 'H2') {
tmpNav.push(...);
}
推荐阅读
- python - django 渲染函数如何知道这个文件的位置?
- javascript - .then 之后 Javascript 未执行
- node.js - 如何获取使用 Inquirer 做出的选择的索引值?
- java - Jetpack 导航:如何从 recyclerview 适配器打开新片段?
- hyperledger-fabric - Fabric Chaincode 中的灵活输入(可变参数函数)可能吗?
- r - 关注者的屏幕名称 Twitter
- arrays - 数组内的角度过滤器数组
- c# - EF Core:如何对脚手架下拉列表中的项目进行排序?
- node.js - 节点 PostgreSql 查询永远不会在某些 Web 应用程序上返回,但在其他应用程序上可以
- c# - 一次同时加载所有标签数据