Add regression tests
This commit is contained in:
parent
e95ed29ca9
commit
627f1ad876
1 changed files with 53 additions and 0 deletions
|
@ -1,3 +1,5 @@
|
|||
// @target: es2015
|
||||
|
||||
// Empty object type literals are removed from intersections types
|
||||
// that contain other object types
|
||||
|
||||
|
@ -23,3 +25,54 @@ let x11: C & D;
|
|||
let x12: A & B & C & D;
|
||||
let x13: D & E;
|
||||
let x14: A & B & C & D & E;
|
||||
|
||||
// Repro from #20225
|
||||
|
||||
type Dictionary = { [name: string]: string };
|
||||
|
||||
const intersectDictionaries = <F1 extends Dictionary, F2 extends Dictionary>(
|
||||
d1: F1,
|
||||
d2: F2,
|
||||
): F1 & F2 => Object.assign({}, d1, d2);
|
||||
|
||||
const testDictionary = <T extends Dictionary>(_value: T) => { };
|
||||
|
||||
const d1 = {};
|
||||
testDictionary(d1);
|
||||
const d2 = intersectDictionaries(d1, d1);
|
||||
testDictionary(d2);
|
||||
|
||||
const d3 = {
|
||||
s: '',
|
||||
};
|
||||
testDictionary(d3);
|
||||
const d4 = intersectDictionaries(d1, d3);
|
||||
testDictionary(d4);
|
||||
const d5 = intersectDictionaries(d3, d1);
|
||||
testDictionary(d5);
|
||||
const d6 = intersectDictionaries(d3, d3);
|
||||
testDictionary(d6);
|
||||
|
||||
// Repro from #27044
|
||||
|
||||
type choices<IChoiceList extends {
|
||||
[key: string]: boolean;
|
||||
}> = IChoiceList & {
|
||||
shoes:boolean;
|
||||
food:boolean;
|
||||
};
|
||||
|
||||
type IMyChoiceList = {
|
||||
car: true
|
||||
};
|
||||
|
||||
type IUnknownChoiceList = {};
|
||||
|
||||
var defaultChoices: choices<{}>;
|
||||
var defaultChoicesAndEmpty: choices<{} & {}>;
|
||||
|
||||
var myChoices: choices<IMyChoiceList>;
|
||||
var myChoicesAndEmpty: choices<IMyChoiceList & {}>;
|
||||
|
||||
var unknownChoices: choices<IUnknownChoiceList>;
|
||||
var unknownChoicesAndEmpty: choices<IUnknownChoiceList & {}>;
|
||||
|
|
Loading…
Reference in a new issue