Машинопись никогда не в подписи типа - PullRequest
0 голосов
/ 16 апреля 2020

Возьми этот интерфейс

export interface OperationStream<In, Out, Context> {

Возьми эту декларацию

const : OperationStream<never, boolean, ConnectionContext & { userId: string }> = ...

Все это прекрасно компилируется.

Это, конечно, нет. Имеет смысл для меня.

const exactOp: OperationStream<never, boolean, void> = registerOp

Так почему же в мире компилируется следующий код?

const exactOp: OperationStream<never, boolean, never> = registerOp

PS. Вот что говорят официальные документы:

Тип never является подтипом и присваивается каждому типу; однако ни один тип не является подтипом или не может быть назначен никогда (кроме самого себя). Даже любой не может быть назначен никогда.

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