我有以下代码:
let show = {
createTag: false,
updateFeature: false,
createFeatureGroup: false,
deleteFeature: false,
deleteCycle: false,
};
我从查询字符串中获取一个值,想要将其与show的键匹配。
以下代码可以正常工作,但我希望有一种让Typescript推断类型并避免使用强制转换的方法:
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;
}
我认为只需要在 show
中发出showDialog in show
的命令,typescript 就会知道在那个 if
语句中,show
是一个键,但事实并非如此。
in
狭化只适用于字符串字面量:https://www.typescriptlang.org/docs/handbook/2/narrowing.html#the-in-operator-narrowing - jonrsharpe