typescript перегрузка возвращаемого значения функции
Нашел вот такой пример перегрузки функции
// сигнатуры перегрузки
type MakeDate = {
(timestamp: number): Date;
(m: number, d: number, y: number): Date;
};
// сигнатура реализации
const makeDate: MakeDate = (mOrTimestamp: number, d?: number, y?: number): Date => {
if (d !== undefined && y !== undefined) {
return new Date(y, mOrTimestamp, d);
} else {
return new Date(mOrTimestamp);
}
};
Работает отлично, никаких проблем с ним нет. Но если пытаюсь изменить тип возвращаемого значения одной из перегрузок, то typescript выдает ошибку:
Type 'number | Date' is not assignable to type 'number'.
// сигнатуры перегрузки
type MakeDate = {
(timestamp: number): number;
(m: number, d: number, y: number): Date;
};
// сигнатура реализации
const makeDate: MakeDate = (mOrTimestamp: number, d?: number, y?: number): Date | number => {
if (d !== undefined && y !== undefined) {
return new Date(y, mOrTimestamp, d);
} else {
return mOrTimestamp;
}
};
Как правильно реализовать такую перегрузку?
Источник: Stack Overflow на русском