Never Type
Last updated
Last updated
Дизайн мови програмування дійсно має концепцію низького типу, що є natural результатом, щойно ви виконуєте code flow analysis, тому йому потрібно надійно представляти те, що може ніколи не статися.
Тип never
використовується в TypeScript для позначення цього bottom Випадки, коли це відбувається природним шляхом:
Функція ніколи не повертає керування (наприклад, якщо тіло функції має while(true){}
)
Функція завжди видає помилку (наприклад, у function foo(){throw new Error('Not Implemented')}
тип повернення foo
- never
)
Звичайно, ви також можете використовувати цю анотацію самостійно
Однак тільки never
може бути значення іншого never.
Чудово Тепер давайте просто перейдемо до його ключового випадку використання :)
Ви можете викликати функції never у контексті never.
void
Як тільки хтось скаже вам, що never
повертається, коли функція ніколи не виходить витончено, ви інтуїтивно хочете думати про це як про те саме, що void
. Однак void
є істотою. never
є завжди неіснуючим.
Функція, яка повертає нічого, повертає Unit void
. Однак функція, яка ніколи не повертає (або завжди викидає), повертає never
. void
— це те, що можна призначити (без strictNullChecking
), але never
не можна ніколи призначити нічого іншого, крім never
.
Для оголошень функцій TypeScript за замовчуванням визначає void
, як показано нижче:
Звичайно, ви можете виправити це за допомогою явної анотації:
Основною причиною є сумісність зворотного слова з реальним кодом JavaScript:
If Base.overrideMe
.
Реальний TypeScript може подолати це за допомогою
abstract
функцій, але цей висновок підтримується для сумісності.
А оскільки never
можна призначити лише іншому never
, ви також можете використовувати його для compile time вичерпних перевірок. Це описано в розділі .