Мотивация: Для целей отладки я хочу создать служебную функцию, которая принимает объект, возможно, с нулевыми значениями, и выдает сообщение об ошибке, если какое-либо из значений равно нулю.
Вопрос: Как я могу создать тип машинописного текста, который принимает любой объект, все значения которого могут быть нулевыми? Мне бы хотелось получить ошибку типа, если я случайно передам этой функции объект, значение которого не может быть нулевым.
Что я пробовал:
interface CheckNullsDictionary {
[id: string]: any;
}
function anyNullErrorMessage(dict: CheckNullsDictionary): string | null {
// Accepting an object is nice because the error message this produces will
// reference the keys that are null.
}
Это почти то, что я хочу, но я хочу, чтобы это была ошибка типа, если я даю ему объект со значениями, которые не могут быть нулевыми, потому что зачем тогда вообще проверять? Пример:
const name = "dustin";
const address: string | null = lookupAddressFor(name);
const phoneNumber: string | null = lookupPhoneNumberFor(name);
// Typescript can see that these are nullable, so it should
// allow this call.
if (anyNullErrorMessage({address, phoneNumber}) {
}
// Typescript knows that it's impossible for name to be null,
// so I want this to be a type error
if (anyNullErrorMessage({name}) {
//react to the error
}