mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-09 02:30:15 -06:00
Add regression test
This commit is contained in:
parent
bc80bb9fe7
commit
975845a68f
@ -147,3 +147,46 @@ type B2<T, V> =
|
||||
|
||||
type C2<T, V, E> =
|
||||
T extends object ? { [Q in keyof T]: C2<T[Q], V, E>; } : T;
|
||||
|
||||
// Repro from #28654
|
||||
|
||||
type MaybeTrue<T extends { b: boolean }> = true extends T["b"] ? "yes" : "no";
|
||||
|
||||
type T0 = MaybeTrue<{ b: never }> // "no"
|
||||
type T1 = MaybeTrue<{ b: false }>; // "no"
|
||||
type T2 = MaybeTrue<{ b: true }>; // "yes"
|
||||
type T3 = MaybeTrue<{ b: boolean }>; // "yes"
|
||||
|
||||
// Repro from #28824
|
||||
|
||||
type Union = 'a' | 'b';
|
||||
type Product<A extends Union, B> = { f1: A, f2: B};
|
||||
type ProductUnion = Product<'a', 0> | Product<'b', 1>;
|
||||
|
||||
// {a: "b"; b: "a"}
|
||||
type UnionComplement = {
|
||||
[K in Union]: Exclude<Union, K>
|
||||
};
|
||||
type UCA = UnionComplement['a'];
|
||||
type UCB = UnionComplement['b'];
|
||||
|
||||
// {a: "a"; b: "b"}
|
||||
type UnionComplementComplement = {
|
||||
[K in Union]: Exclude<Union, Exclude<Union, K>>
|
||||
};
|
||||
type UCCA = UnionComplementComplement['a'];
|
||||
type UCCB = UnionComplementComplement['b'];
|
||||
|
||||
// {a: Product<'b', 1>; b: Product<'a', 0>}
|
||||
type ProductComplement = {
|
||||
[K in Union]: Exclude<ProductUnion, { f1: K }>
|
||||
};
|
||||
type PCA = ProductComplement['a'];
|
||||
type PCB = ProductComplement['b'];
|
||||
|
||||
// {a: Product<'a', 0>; b: Product<'b', 1>}
|
||||
type ProductComplementComplement = {
|
||||
[K in Union]: Exclude<ProductUnion, Exclude<ProductUnion, { f1: K }>>
|
||||
};
|
||||
type PCCA = ProductComplementComplement['a'];
|
||||
type PCCB = ProductComplementComplement['b'];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user