【发布时间】:2021-08-04 06:13:45
【问题描述】:
我试图了解 Typescript 如何从函数调用中推断返回值。假设我有一个名为sendRequest 的函数,它可以返回两个特定格式的对象。为什么 Typescript 不能知道如果 loading 是 true,那么 data 的唯一可能值是 null,如果 loading 是 false,那么 @987654328 唯一可能的值@ 是 Data 类型?它仍然说data 可能是null,即使根据列出的可能返回类型这是不可能的。
type Data = { firstName: string; lastName: string };
type ReturnType =
| { loading: true; data: null }
| { loading: false; data: Data };
const sendRequest = (fetch: boolean): ReturnType => {
if (fetch) {
return { loading: true, data: null };
}
return { loading: false, data: { firstName: 'Bart', lastName: 'Simpson' } };
};
const { loading, data } = sendRequest(true);
if (loading) {
data; // <-- Typescript says that `data` can be either `Data` or `null`, while based on the return type, and since `loading` if `true`, `data` can't be `null`.
}
【问题讨论】:
标签: javascript typescript