TS中有没有一种方法来缩小对象属性的范围,例如排除undefined
个值?
以下代码(TS playground):
interface Dict {
[k: string]: {
prop?: number;
};
}
const d: Dict = {};
let a = "item";
const b = a;
const c = "item";
if (d[a].prop) {
d[a].prop++ // Nope
}
if (d[b].prop) {
d[b].prop++ // Neither
}
if (d[c].prop) {
d[c].prop++ // OK
}
说明了当使用变量或作为这些变量副本的常量访问字典/对象值时,TypeScript会给我们一个关于潜在undefined
个值的错误,即使试图缩小范围.它只在使用从文字定义的常量时起作用.
有没有一个/什么解决方案来避免这种行为?