#typescript
#typescript
Вопрос:
Это работает для обоих aGood
и aBad
:
type AOptional = {x?: boolean};
const aBad: AOptional = { x: undefined };
const aGood: AOptional = { };
Я не хочу, чтобы это работало. Я хочу только aGood
пройти проверку типа.
Есть ли способ определить AOptional
таким образом, чтобы обеспечить это?
Спасибо!
Комментарии:
1. Я не думаю, что мы можем сделать это для переменной .. мы могли бы придумать что-нибудь для параметра функции… но мне любопытно, почему вы хотите запретить одно, но разрешить другое..
2. Это скорее принципиальный вопрос — я думал, должен быть способ отличить:
{x?: boolean}
и{x: boolean|undefined}
, но его нет3. Вы можете их различать,
{ x: boolean | undefined }
присваивается{ x?: boolean }
, но не наоборот. Но объектный литерал с типом{ x: undefined }
будет присваиваться{x?: boolean}
.4. хорошо, да. Это хороший момент. Вы можете скопировать комментарий к ответу 🙂
Ответ №1:
Вы можете различать между { x: boolean | undefined }
и { x?: boolean }
. { x: boolean | undefined }
присваивается { x?: boolean }
, но не наоборот.
Но объектный литерал с типом { x: undefined }
будет присваиваться {x?: boolean }
при любых настройках компилятора.