Я хочу создать функцию с параметром rest, которая будет возвращать условные типы следующим образом:
- null при наличии неопределенного значения
- строка, если предоставляется одно число
- массив строк при наличии нескольких чисел
Я пытался написать эту функцию в нескольких формах с использованием синтаксиса TypeScript extends, но, к сожалению, ни один из них не работал.
Я также пытался написать функцию, в которой первый параметр был числом, а второй - параметром отдыха, но это тоже не сработало.
Вот так сейчас выглядит рабочий код кроме правильного условного возврата типов:
import { rem } from "polished";
type UnitValue = number | undefined;
const unit = (...values: UnitValue[]): string | string[] | null => {
const result: string[] = [];
values.forEach(value => {
if (value) {
result.push(rem(value));
}
});
if (result.length === 1) {
return result[0];
}
if (result.length > 1) {
return result;
}
return null;
};
Воссозданный регистр в codeansbox.io -> ссылке а>
Мне нужна эта функция, чтобы возвращать точно и только эти типы в трех случаях:
unit(undefined) -> null
unit(16) -> string
unit(16, 32) -> string[]