Привет, друзья, надеюсь, у вас все хорошо, я знаю, что многие разработчики любят TypeScript, и я здесь, чтобы сообщить вам о новых сюрпризах, которые Microsoft объявила в новой версии 3.7 TypeScript, есть много интересных функций, которые мы действительно ждет его.
Необязательная цепочка
TypeScript 3.7 реализует одну из самых востребованных функций ECMAScript: необязательную цепочку, давайте посмотрим, как это работает!
let x = foo?.bar.baz();
приведенный выше код такой же, как:
let x = (foo === null || foo === undefined) ?
undefined :
foo.bar.baz();
другой пример
// Before
if (foo && foo.bar && foo.bar.baz) {
// ...
}
// After-ish
if (foo?.bar?.baz) {
// ...
}
Нулевое слияние
let x = foo ?? bar();
это новый способ сказать, что значение foo
будет использоваться, когда оно «присутствует»; но когда это null
или undefined
, вычислите bar()
вместо него.
приведенный выше код такой же, как:
let x = (foo !== null && foo !== undefined) ?
foo :
bar();
Функции утверждения
Существует определенный набор функций, которые throw
выдают ошибку, если происходит что-то непредвиденное. Они называются функциями «утверждения». Например, в Node.js для этого есть специальная функция assert
.
assert(someValue === 42);
//or
function yell(str) {
assert(typeof str === "string");
return str.toUppercase();
// Oops! We misspelled 'toUpperCase'.
// Would be great if TypeScript still caught this!
}
приведенный выше код такой же, как:
function yell(str) {
if (typeof str !== "string") {
throw new TypeError("str should have been a string.")
}
// Error caught!
return str.toUppercase();
}
Улучшенная поддержка never
-функций возврата
Чтобы гарантировать, что функция никогда потенциально не вернет undefined
или эффективно не вернет все пути кода, TypeScript нуждался в некотором синтаксическом сигнале — либо return
, либо throw
в конце функции. Таким образом, пользователи обнаружили, что return
используют свои функции отказа.
function dispatch(x: string | number): SomeType {
if (typeof x === "string") {
return doThingWithString(x);
}
else if (typeof x === "number") {
return doThingWithNumber(x);
}
return process.exit(1);
}
Теперь, когда вызываются эти функции, возвращающие never
, TypeScript распознает, что они влияют на граф потока управления, и учитывает их.
Я надеюсь, вам понравилось читать эту статью, это не конец, есть много других функций, которые Microsoft объявляет, вы можете прочитать полную статью здесь.
Источник: https://devblogs.microsoft.com/typescript/
Спасибо за прочтение, хорошего дня :)