【发布时间】:2021-09-21 04:41:23
【问题描述】:
我正在寻找一些关于 typescript 编译器 (4.4.2) 在这种情况下所做的事情的见解/理由:
export function T<TVal extends number>(): void
{
type moo = TVal extends number ? true : false;
let boo: moo;
boo = true; // TS2322: Type 'true' is not assignable to type 'moo'.
boo = false; //TS2322: Type 'false' is not assignable to type 'moo'.
boo;
type meep = TVal extends number ? { sad: true } : { times: true };
let hmmm: meep;
hmmm = { sad: true, times: true }; // TS2322: Type '{ sad: true; times: boolean; }' is not assignable to type 'meep'.
hmmm = { sad: true }; // TS2322: Type '{ sad: true; }' is not assignable to type 'meep'.
hmmm = { times: true }; // TS2322: Type '{ times: boolean; }' is not assignable to type 'meep'.
hmmm;
}
我认为条件可能是对联合或交集进行评估,但它似乎既不是基于上述错误消息。我在 github 上浏览过这些问题,但它们似乎并不完全相同。
明确地说,我不是在问如何做某事,而是在问为什么。
【问题讨论】:
标签: typescript typescript-generics