Например в обычном TS чтобы проверить на undefined надо написать <что-то> === undefined. При конструировании типов же надо писать <что-то> extends undefined ну и еще целый ряд таких вот приколов, из-за которых не совсем понятно, как логику прописывать)
И какой в результате ты сделал вывод, почему у тебя не получалось?
Потому что синтаксис работы с типами другой.
Например в обычном TS чтобы проверить на undefined надо написать <что-то> === undefined. При конструировании типов же надо писать <что-то> extends undefined ну и еще целый ряд таких вот приколов, из-за которых не совсем понятно, как логику прописывать)