typescript - 检查对象是否在 Typescript 中有键并使用该键
问题描述
我有以下代码:
let show = {
createTag: false,
updateFeature: false,
createFeatureGroup: false,
deleteFeature: false,
deleteCycle: false,
};
我从查询字符串中得到一个值,我想与 show 的键匹配。
以下代码可以正常工作,但我想要一种方法让 Typescrpt 推断它并避免发出强制转换:
const showDialog = $page.query.get('show') || '';
if (showDialog && showDialog in show) {
// I want to get rid of the "<keyof typeof show>" cast
show[<keyof typeof show>showDialog] = true;
}
我虽然只是发出showDialog in show
打字稿会知道在那个if
showDialog 里面是一个键show
,但似乎并非如此。
解决方案
您可以创建类型保护:
function isValidParam(k: string): k is keyof typeof show {
return k in show;
}
const showDialog = $page.query.get('show') || '';
if (isValidParam(showDialog)) {
show[showDialog] = true;
}
但你决定是否值得。我个人可能会保留演员阵容。
推荐阅读
- c - 幂函数 K&R
- swift - 混淆可可触摸快速框架
- angularjs - 注入超时不起作用
- php - 使用 PDO 获取数据
- php - 选择所有列,但与 Laravel 中的数据库表不同
- python - python对终端提示动态回答是/否
- ios - 当调用 popToRootViewController 并设置 tabBarController selectedIndex 时,弹出的 VC 没有在同一个运行循环中调用 viewDidDisappear
- node.js - firebaseui-web:如何在 Node.js 后端识别用户?
- javascript - 谷歌未定义:如何检查是否在 React 中加载了谷歌地图脚本
- .net - ASP.NET MVC 5 中的表单/Windows/Passport 身份验证与身份验证过滤器