我有一个非常简单的代码:
const foo = (state: RootState): MyData => undefined;
这给出了一个错误:
类型“未定义”不可分配给类型“MyData”。
这是相当合理的,因为我的类型MyData
不允许未定义。
但如果我现在写这个:
const foo = (state: RootState): MyData => state.data?.myData;
然后它编译没有麻烦。我不明白这里发生了什么,因为如果state.data
是未定义的,那么它应该真的返回未定义并且对编译器来说应该很明显。
我在这里错过了什么吗?
PS这是类型的最小示例:
type State = {
data: {
myData: MyData;
};
}
type MyData = {
}