Колись давно ми розповідали вам про ts-reset. Цей модуль виправляв поведінку TypeScript при використанні
.filter(Boolean). І ні, поки він сам цього робити чомусь не може 😁. Проте покращення зʼявились і тепер в нас є щось типу автоматичних перевірок на тип (самі придумайте як краще перекласти Inferred Type Predicates).
Краще один раз побачити ніж десять разів прочитати:
type User = { id: string };
type ProUser = User & {
plan: string;
};
const users: (User | ProUser)[] = [
{ id: "1" },
{ id: "2", plan: "pro" },
{ id: "3" },
];
users.filter((user) => "plan" in user).map((user) => user.plan.toUpperCase());
Такий код до TypeScript 5.5 не вважається правильним, адже
user в map все ще має тип User | ProUser, а отже властивості plan може не існувати.Щоб дізнатись більше про цю бета-версію, переходьте за посилання внизу.
👉 Відкрити посилання
👉 Дивитись пост в X від t3.gg
#news