MEFODY_DEV Telegram 375
Satisfies в TypeScript

Адам Ракис на примерах объясняет пользу ключевого слова satisfies в TypeScript.

Если коротко, это что-то вроде assert для типов. Представьте, что у вас есть тип с опциональным полем.


type Item = {
name: string;
description?: string;
};

function insertItems(items: Item[]) {}

insertItems(
backendItems.map(item => {
return {
name: item.item_name,
description_new: item.item_description,
};
})
);


В этом коде есть неприятный баг. TypeScript смотрит на типы и пытается их пересечь. Из-за опциональности поля description ошибки в коде нет с точки зрения типов. Но если дальше массив в рантайме передаётся с клиента на бэкенд, получим, вероятно, ошибку.

Как словить эту ошибку вовремя? Помимо явного указания типов вообще везде, где только можно вписать тип, можно сделать так:


insertItems(
backendItems.map(item => {
return {
name: item.item_name,
description_new: item.item_description,
} satisfies Item;
})
);


Здесь TS проверит реальное соответствие типу и ругнётся на лишнее поле. При этом автовыведение типов всё ещё работает.

Подробнее — по ссылке.

https://frontendmasters.com/blog/satisfies-in-typescript/
👍459🔥4



tgoop.com/mefody_dev/375
Create:
Last Update:

Satisfies в TypeScript

Адам Ракис на примерах объясняет пользу ключевого слова satisfies в TypeScript.

Если коротко, это что-то вроде assert для типов. Представьте, что у вас есть тип с опциональным полем.


type Item = {
name: string;
description?: string;
};

function insertItems(items: Item[]) {}

insertItems(
backendItems.map(item => {
return {
name: item.item_name,
description_new: item.item_description,
};
})
);


В этом коде есть неприятный баг. TypeScript смотрит на типы и пытается их пересечь. Из-за опциональности поля description ошибки в коде нет с точки зрения типов. Но если дальше массив в рантайме передаётся с клиента на бэкенд, получим, вероятно, ошибку.

Как словить эту ошибку вовремя? Помимо явного указания типов вообще везде, где только можно вписать тип, можно сделать так:


insertItems(
backendItems.map(item => {
return {
name: item.item_name,
description_new: item.item_description,
} satisfies Item;
})
);


Здесь TS проверит реальное соответствие типу и ругнётся на лишнее поле. При этом автовыведение типов всё ещё работает.

Подробнее — по ссылке.

https://frontendmasters.com/blog/satisfies-in-typescript/

BY mefody.dev




Share with your friend now:
tgoop.com/mefody_dev/375

View MORE
Open in Telegram


Telegram News

Date: |

Select: Settings – Manage Channel – Administrators – Add administrator. From your list of subscribers, select the correct user. A new window will appear on the screen. Check the rights you’re willing to give to your administrator. To upload a logo, click the Menu icon and select “Manage Channel.” In a new window, hit the Camera icon. 2How to set up a Telegram channel? (A step-by-step tutorial) The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot. Add the logo from your device. Adjust the visible area of your image. Congratulations! Now your Telegram channel has a face Click “Save”.!
from us


Telegram mefody.dev
FROM American