Вийшов TypeScript 5.9: що нового

💡 Усі статті, обговорення, новини про Front-end — в одному місці. Приєднуйтесь до Front-end спільноти!

Команда TypeScript випустила нову версію мови — 5.9. У ній з’явилося кілька помітних змін, серед яких підтримка import defer, новий режим --module node20, покращене tsc --init, зручніші підказки в редакторі та багато дрібних оновлень.

Мінімалістичний tsc —init

Команда tsc --init тепер генерує компактний tsconfig.json з актуальними налаштуваннями: підтримка сучасних модулів, JSX, строгі перевірки типів і мінімальна залежність від @types.

Приклад нового tsconfig.json:

{
  "compilerOptions": {
    "module": "nodenext",
    "target": "esnext",
    "types": [],
    "sourceMap": true,
    "declaration": true,
    "declarationMap": true,
    "noUncheckedIndexedAccess": true,
    "exactOptionalPropertyTypes": true,
    "strict": true,
    "jsx": "react-jsx",
    "verbatimModuleSyntax": true,
    "isolatedModules": true,
    "noUncheckedSideEffectImports": true,
    "moduleDetection": "force",
    "skipLibCheck": true
  }
}

Підтримка import defer

З’явилася підтримка нового синтаксису import defer, який дозволяє імпортувати модуль, але не виконувати його одразу. Модуль запускається тільки тоді, коли ви звертаєтесь до його експорту:

import defer * as feature from "./some-feature.js";
console.log(feature.specialConstant); // модуль виконується саме тут

❗ Не підтримуються такі форми:

import defer { something } from "module"; // ❌
import defer defaultExport from "module"; // ❌

Новий режим —module node20

У версії 5.9 з’явився новий стабільний режим: --module node20, який моделює поведінку Node.js v20.

На відміну від nodenext, він:

  • не буде змінюватися в майбутньому,
  • за замовчуванням встановлює --target es2023.

Дрібні моменти

  • У редакторах на кшталт VS Code з’явилися розгортувані підказки типів, можна натискати + або — при наведенні.
  • Довжину підказок можна налаштовувати через js/ts.hover.maximumLength.
  • DOM API тепер з короткими описами, а не просто з посиланням на MDN.
  • Перевірка існування файлів стала до 11% швидшою.
  • Менше навантаження при роботі з великими бібліотеками типу Zod або tRPC.
  • ArrayBuffer більше не охоплює Buffer — можуть виникнути нові помилки типів.
  • Краща обробка дженериків, завдяки чому тепер точніше виводяться типи, але можуть з’явитися нові помилки, які зазвичай вирішуються додаванням явних типів.

Це оновлення є підготовчим до версії TS 6.0, яка, в свою чергу, є проміжною перед повністю новою, нативною версією TS 7.0. Оновитися можна вже, достатньо використати команду:

npm install -D typescript 

👍ПодобаєтьсяСподобалось5
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Довжину підказок можна налаштовувати через js/ts.hover.maximumLength.

Нарешті!

import defer: супер цікаво але стрьомно, бо для JS воно тільки в stage 3 github.com/...​roposal-defer-import-eval

У VS Code з’явилися розгортувані підказки типів

В оригиналі зовсім інше:
«in editors LIKE Visual Studio and VS Code»

Підписатись на коментарі