Skip to content

Commit 98e6d36

Browse files
authored
🤖 Merge PR DefinitelyTyped#72374 [Luxon] Fix output types of DateTime min/max by @Rusty-Beard
1 parent 6b42c86 commit 98e6d36

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

‎types/luxon/src/datetime.d.ts‎

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1596,18 +1596,30 @@ export class DateTime<IsValid extends boolean = DefaultValidity> {
15961596
*
15971597
* @param dateTimes - the DateTimes from which to choose the minimum
15981598
*/
1599-
static min<AllValid extends boolean>(
1600-
...dateTimes: Array<DateTime<AllValid>>
1601-
): (AllValid extends true ? DateTime<Valid> : never) | (AllValid extends false ? DateTime<Invalid> : never);
1599+
static min<Values extends Array<DateTime<boolean>>>(
1600+
...dateTimes: Values
1601+
): Values extends [] ? undefined
1602+
:
1603+
| (Values extends Array<DateTime<infer AllValues>> ? AllValues extends true ? DateTime<Valid> : never
1604+
: never)
1605+
| (Values extends Array<DateTime<infer AllValues>> ? AllValues extends false ? DateTime<Invalid> : never
1606+
: never)
1607+
| ([] extends Values ? undefined : never);
16021608

16031609
/**
16041610
* Return the max of several date times
16051611
*
16061612
* @param dateTimes - the DateTimes from which to choose the maximum
16071613
*/
1608-
static max<AllValid extends boolean>(
1609-
...dateTimes: Array<DateTime<AllValid>>
1610-
): (AllValid extends true ? DateTime<Valid> : never) | (AllValid extends false ? DateTime<Invalid> : never);
1614+
static max<Values extends Array<DateTime<boolean>>>(
1615+
...dateTimes: Values
1616+
): Values extends [] ? undefined
1617+
:
1618+
| (Values extends Array<DateTime<infer AllValues>> ? AllValues extends true ? DateTime<Valid> : never
1619+
: never)
1620+
| (Values extends Array<DateTime<infer AllValues>> ? AllValues extends false ? DateTime<Invalid> : never
1621+
: never)
1622+
| ([] extends Values ? undefined : never);
16111623

16121624
// MISC
16131625

‎types/luxon/test/luxon-tests.module.ts‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,8 +233,13 @@ DateTime.local().toUTC(); // $ExpectType DateTime<true>
233233
DateTime.utc().toLocal(); // $ExpectType DateTime<true>
234234

235235
DateTime.max(dt, now); // $ExpectType DateTime<true> | DateTime<false>
236+
DateTime.max(now, now); // $ExpectType DateTime<true>
237+
DateTime.max(...[dt, now].filter(date => date)); // $ExpectType DateTime<true> | DateTime<false> | undefined
238+
DateTime.max(); // $ExpectType undefined
236239
DateTime.min(dt, now); // $ExpectType DateTime<true> | DateTime<false>
237240
DateTime.min(now, now); // $ExpectType DateTime<true>
241+
DateTime.min(...[dt, now].filter(date => date)); // $ExpectType DateTime<true> | DateTime<false> | undefined
242+
DateTime.min(); // $ExpectType undefined
238243

239244
const anything: unknown = 0;
240245
if (DateTime.isDateTime(anything)) {

0 commit comments

Comments
 (0)