checkENV<T = Record<string, string | undefined>>(items: T): T[keyof T] is ??? {
Object.entries(items).forEach(([name, value]) => {
if (isNil(value)) {
throw new Error(`ENV variable "${name}" is not defined`);
}
});
}
не могу придумать, как написать( подмогните плиз
Вынеси типизированную среду в тип, проверяй сразу ее
не получается =( https://www.typescriptlang.org/play?#code/C4TwDgpgBAogdgNygXigJQgYwPYCcAmAPAM7C4CWcA5gDRSkXVQA+UArnPhAGaUT4A+AFBDuHTMHLY4UTAAssAaxgA5AGoAKcsAgBbYgC5YiAJRHte4lHJWMOAoUUQQ2blFCRX1nfroNKVAJQAN5CUFC4EMBsuDIAhADyAEYAVljAAHQIAIYANmwQxFo+xCYZEAgQuCAaOfnQyEF1BVBxyKgcXLxw-CYA3EIAviI4cKRQ2KlG8EiowcNCo+PB7gAMdMAAjBsATFCDKBOpIrlR7oXARv5MqADktyLkbhrySqqawcDr7tvuO4MmEwhMLhHTjVBbIYjaTEbCnDK5bBUDRg4AmIA
Что-то в таком духе
твой пример некорректен, добавил еще ключ и присвоил его в тест - должна быть ошибка, но нету
Я тебе привел пример как с типами это лучше сделать лел
задачу твой "пример с типами" не решает, спасибо за попытку
Тайп-гвард ведь может уточнять тип только для одного из переданных в него аргументов, причём деструктурировать такой аргумент нельзя. И если не разбивать объект с переменными среды деструктуризацией, вроде бы, всё работает: play.
хм, интересно... немного оверхеда получается, но лучше, чем каждое свойство отдельно проверять
Обсуждают сегодня