Как работает условный тип в TypeScript - PullRequest
2 голосов
/ 07 августа 2020

Я наткнулся на условный тип в TypeScript и нашел много расплывчатых определений его функциональности в TypeScript.

Рассмотрим в качестве примера следующий условный тип:

type NonNullable<T> = T extends null | undefined ? never : T

let MyType : NonNullable<string | null>;

Этот пост - это первый результат, когда я ищу тип условия в TypeScript в Google.

Он определяет T extends U ? X : Y условный тип следующим образом:

На человеческом языке этот условный тип читается следующим образом: Если тип T присваивается типу U, выберите тип X; в противном случае выберите тип Y.

Итак, применив это определение к нашему примеру, я могу сказать, может ли (string | null) назначаться типу null? Ответ отрицательный, поэтому MyType должно быть (string | null). Что неверно

Другой пост здесь определяет его следующим образом, что имеет смысл:

Условные типы позволяют отфильтровать определенные элементы типа объединения.

В этом определении компилятор проверяет каждый возможный тип (позволяет называть его TT) в типе объединения T, если этот тип (TT) присваивается null или undefined компилятор отфильтрует их при создании определения для MyType.

Вот мои вопросы:

  1. Какое определение правильное?
  2. Есть ли какие-нибудь лучшее (и общее) определение условных типов в TypeScript?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...