我有一个更复杂问题的简化版本。以下导致 TSC 抛出错误:
type Demo<isTrue> = isTrue extends true ? { a: string } : isTrue extends false ? { b: string } : never;
const func = <T extends boolean>(arg: T): Demo<T> => {
if (arg) {
return {a: "hello" };
} else {
return { b: "world" };
}
};
const out = func(true);
引发以下错误:
Type '{ a: string; }' is not assignable to type 'Demo<T>'.
Type '{ b: string; }' is not assignable to type 'Demo<T>'.
out
底部的检查类型正确,所以只是函数定义有问题。我怎样才能更好地理解这一点以及如何解决它?