javascript - 类型“未定义”不能用作索引类型。ts(2538)
问题描述
我是打字稿初学者,如您所见,我为道具设置了类型,但出现错误:类型“未定义”不能用作索引类型.ts(2538) (property) AA.action?: string | 不明确的
有什么建议/帮助吗?我的代码:
interface AA {
action?: string;
actionArgs?: string;
}
const ArticleList: React.FC<AA> = (props) => {
const data = useSelector((state: RootStateOrAny) => {
const secondData = {
sites: state.articles.sites,
analysers: state.siteArticles.analysers,
};
return secondData[props.action];
});
如果我删除可选然后得到更多错误:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“{网站:任何; 分析仪:任何;}'。在类型 '{ sites: any; 上找不到具有类型参数的索引签名。分析仪:任何;}'.ts(7053)
解决方案
interface AA {
action: keyof MySecondData;
actionArgs?: string;
}
interface MySecondData {
sites: string_I_guess[],
analysers: Analysers[],
};
const ArticleList: React.FC<AA> = (props) => {
const data = useSelector((state: RootStateOrAny) => {
const secondData: MySecondData = {
sites: state.articles.sites,
analysers: state.siteArticles.analysers,
};
return secondData[props.action];
});
推荐阅读
- javascript - 如何将 nodejs 缓冲区使用重构为纯 JS
- docker - docker_compose.yml 连接到 cronjob 时不输出 $HOSTNAME
- java - Weblogic ORDS 部署 - ClassCastException
- azure - 如何使用 Get-AzVM 输出订阅名称
- kotlin - Kotlin 协程与 webflux 的优势
- salesforce - 解决 Storybooks 与 Salesforce Platform 集成的自定义标签
- r - 将标签添加到使用 plot_geo 创建的绘图地图
- django - 如何在管理站点中自定义多对多内联
- postgresql - Postgres - 在 Do Block 中更改角色(匿名代码块)
- python - 单击链接时,Selenium 退出全屏