【发布时间】:2020-12-19 13:48:17
【问题描述】:
我在一个项目中遇到了以下问题(抽象),如果我做错了什么,我真的很困惑:
const fooState = {
normal: {
normalProp: "string",
},
normal2: {
normalProp: 0,
},
weird: {
weirdProp: "anything",
},
};
type fooKeys = keyof typeof fooState;
export const getFooState = <T1 extends fooKeys>(arg: T1) => {
const foundState = fooState[arg];
if ("weirdProp" in foundState) {
console.log(foundState.weirdProp); // This line throws an error, even though it is a practical possibility.
}
return foundState;
};
代码应该足以解释我的问题。我的目标是在 foundState 对象具有特定属性时以不同方式处理特定情况。
在我的示例中,如果参数 arg 作为 "weird" 传递,控制台日志将/应该触发但 TS 会引发错误。这是为什么呢?
感谢所有答案。
【问题讨论】:
标签: typescript type-inference typescript-generics