Можно ли создать определяемый пользователем тип защиты, который позволит компилятору знать, что все переданные ему аргументы определены?
Я хотел бы сделать что-то вроде этого:
public static all(...values: unknown[]): values is object[] {
return values.every(value => typeof(value) !== 'undefined');
}
Я хотел бы использовать это, чтобы я мог передать набор аргументов, которые потенциально не определены, обрабатывать то, что происходит, если они не определены, и в противном случае передавать их методу, который требует значения, не являются неопределенными.
Это может выглядеть так:
if (!ParamHelper.all(id, ...dateParts)) { return []; }
const date = new Date(dateParts.join('-'));
const result = await this.service.getData(assetId, date);
Когда я пробую наивную версию выше, компилятор говорит мне:
предикат типа не может ссылаться на параметр rest
Итак, я предполагаю, что это невозможно. Но я решил спросить, прежде чем сдаться.
Спасибо!