Как сделать машинописный тип для объекта, который должен иметь значения свойств, допускающие значение NULL? - PullRequest
0 голосов
/ 25 мая 2020

Мотивация: Для целей отладки я хочу создать служебную функцию, которая принимает объект, возможно, с нулевыми значениями, и выдает сообщение об ошибке, если какое-либо из значений равно нулю.

Вопрос: Как я могу создать тип машинописного текста, который принимает любой объект, все значения которого могут быть нулевыми? Мне бы хотелось получить ошибку типа, если я случайно передам этой функции объект, значение которого не может быть нулевым.

Что я пробовал:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...