Принудительное определение необязательного свойства интерфейса - PullRequest
0 голосов
/ 30 августа 2018

Скажите, у меня есть следующий интерфейс:

interface Example {
    optionalString?: string
    // ... other props
}

И у меня есть функция, принимающая Example в качестве параметра. Я знаю, что синтаксис возвращаемого типа фальшивый.

function ensureDefined (example : Example) : Example & {optionalString: string}

Идея этой функции состоит в том, чтобы убедиться, что свойство optionalString из example определено и этот объект возвращен. В этом случае каждый раз, когда я хочу получить доступ к свойству optionalString, мне не нужно делать if(example.optionalString){}.

Я попытался создать расширение интерфейса следующим образом:

interface ExampleExtension extends Example {
    optionalString: string // notice no '?'
    // ... other props
}

Но тогда этот нельзя назначить обратно переменной с типом базового интерфейса.

Я это слишком усложняю? Нужно ли мне иметь две отдельные переменные двух разных типов?

1 Ответ

0 голосов
/ 30 августа 2018

У меня работает расширение интерфейса на детской площадке . Если это все еще не работает для вас, пожалуйста, добавьте код, достаточный для воспроизведения проблемы в вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...