Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Несмотря на все старания по избавлению от XML в качестве формата данных, он все равно приходит к нам обратно...
const template = (username: string, stories: Story[]) => ({
text: `:wave: Привет ${username}, зацени наши последние статьи.`,
attachments: stories.map(s => ({
title,
color: '#000000',
title_link: s.link,
author_name: s.author.name,
author_icon: s.author.avatarURL,
text: `Опубликовано в _${s.publishedAt}_.`
})
})author_name: s.author.name,
author_icon: s.author.avatarURL,
title,
color: '#000000',
title_link: s.link,Например, обратите внимание на непонятно к чему относящееся свойство color
interface Story {
title: string
link: string
publishedAt: Date
author: { name: string, avatarURL: string }
}messate(title: "", attachments: stories.map(s => attachment(color: "", author: author(icon: "", name: ""), title: title(link: "", title: ""));messate(text_obj, stories.map(s => attachment(link_obj, author(name_obj, icon_obj), title(link_obj, title_text));
Типизированный DSL в TypeScript из JSX