Привет, друзья, надеюсь, у вас все хорошо, я знаю, что многие разработчики любят 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/

Спасибо за прочтение, хорошего дня :)