【发布时间】:2021-10-21 23:14:43
【问题描述】:
返回 reduce 函数的结果会产生类型错误,但将结果保存在变量 (isValid) 中然后返回变量不会产生任何错误。
由于这两种方法在语义上是等效的,我想知道这是否是 TS 类型推断系统中的错误。
interface Params {
a: string;
b: number;
}
const paramKeys = ["a", "b"] as const;
// Doesn't work -> Type 'string' is not assignable to type 'boolean'.
const isHydrationParamsValid = (params: any): params is Params => {
return paramKeys.reduce((_, curr) => {
if (!params[curr]) {
console.warn(`Hydration param ${curr} is missing`);
return false;
}
return true;
}, true);
};
// Works!
const isHydrationParamsValid2 = (params: any): params is Params => {
const isValid = paramKeys.reduce((_, curr) => {
if (!params[curr]) {
console.warn(`Hydration param ${curr} is missing`);
return false;
}
return true;
}, true);
return isValid;
};
【问题讨论】:
标签: typescript typeguards