🔥🔥 Особенности новой версии Typescript

TypeScript — это язык программирования, разработанный и поддерживаемый компанией Microsoft. Он является строгим синтаксическим надмножеством JavaScript и добавляет в язык необязательную статическую типизацию.

Typescript анонсировал свою бета-версию 4.3 1 апреля 2021 года, для установки этой версии вы можете воспользоваться командой ниже

npm install typescript@beta

Улучшения типов шаблонных строк
В новой версии введены шаблонные литеральные типы для контекстуально типизированных шаблонных литеральных выражений, благодаря чему при выводе целевого типа шаблонного литерала typescript теперь позволяет исходному типу также быть шаблонным литеральным типом.

Ниже приведены примеры улучшенных отношений присваивания:

type Color = "red" | "blue";
type Quantity = "one" | "two";

type SeussFish = `${Quantity | Color} fish`;
// same as
//  type SeussFish = "one fish" | "two fish"
//         | "red fish" | "blue fish";
…or match patterns of other string-like types.

declare let s1: `${number}-${number}-${number}`;
declare let s2: `1-2-3`;

// Works!
s1 = s2;
Вход в полноэкранный режим Выйти из полноэкранного режима

Всегда правдивые проверки обещаний
Добавлена поддержка выброса ошибки при отсутствии await в условиях

статические индексные подписи
Индексные подписи позволяют задать больше свойств для значения, чем явно объявлено в типе. В последней версии индексные подписи теперь могут быть объявлены как статические.

Завершение утверждений импорта
Когда пользователь начинает писать утверждение импорта, не имеющее пути, typescript предоставит ему список возможных импортов. Когда пользователь зафиксирует завершение, он завершит полный оператор импорта, включая путь, который пользователь собирался написать.

Ниже приведен пример автоматического импорта в последней версии typescript

Поддержка редактором тегов @link
TypeScript теперь понимает теги @link и будет пытаться разрешить объявления, на которые они ссылаются. Это означает, что вы сможете навести курсор на имена в тегах @link и получить быструю информацию или использовать такие команды, как go-to-definition или find-all-references.

Например, в примере ниже вы сможете перейти к определению bar в @link bar, и редактор с поддержкой TypeScript перейдет к объявлению функции bar.

/**
 * This function depends on {@link bar}
 */
function foo() {

}

function bar() {

}

Вход в полноэкранный режим Выход из полноэкранного режима

Объединенные перечисления нельзя сравнивать с произвольными числами
Решенный вопрос о Некоторые перечисления считаются перечислениями союза, когда их члены либо автоматически заполнены, либо тривиально записаны. В этих случаях перечисление может вспомнить каждое значение, которое оно потенциально представляет.

В новой версии, если переменная с типом union enum сравнивается с числовым литералом, которому она никогда не может быть равна, то средство проверки типов выдаст ошибку.

enum E {
 A = 0,
 B = 1,
}

function doSomething(x: E) {
 // Error! This condition will always return 'false' since the types 'E' and '-1' have no overlap.
 if (x === -1) {
  // ...
 }
}

//As a workaround, you can re-write an annotation to include the appropriate literal type.

// Include -1 in the type, if we're really certain that -1 can come through.
function doSomething(x: E | -1) {
 if (x === -1) {
  // ...
 }
}


//You can also use a type-assertion on the value.
function doSomething(x: E) {
 // Use a type asertion on 'x' because we know we're not actually just dealing with values from 'E'.
 if ((x as number) === -1) {
  // ...
 }
}
Вход в полноэкранный режим Выход из полноэкранного режима

В качестве альтернативы вы можете передекларировать ваше перечисление, чтобы оно имело нетривиальный инициализатор, так что любое число можно присвоить и сравнить с этим перечислением. Это может быть полезно, если перечисление предназначено для определения нескольких известных значений.

enum E {
 // the leading + on 0 opts TypeScript out of inferring a union enum.
 A = +0,
 B = 1,
}
Вход в полноэкранный режим Выход из полноэкранного режима

Если вы хотите прочитать статью полностью, вы можете заглянуть сюда.

Счастливого кодинга!

Для получения более подробной информации ознакомьтесь со статьей здесь:- Особенности новой версии Typescript

Оцените статью
devanswers.ru
Добавить комментарий