и добиться желаемого? - https://tsplay.dev/wXQvQN
Как будто 6 строчку продублировать надо
а зачем там перегрузка функции getStyle, да к тому же одна ?
исправил. По определению перегрузок примерно понятно что пытаюсь добиться. Чтобы избавиться от несуществующих строк headline_normal и headline_bold
сам token тоже нужно сузить: const getToken = (variant: Variant, isBold: boolean): Token => { const style = getStyle(variant, isBold) const token = `${variant}_${style}` as const; if (token === 'headline_bold' || token === 'headline_normal' || token === 'text_default') { throw Error() // как то обработать несоответствующие типы } return token }
ну вот проблема в перечислении)) - if (token === 'headline_bold' || token === 'headline_normal' || token === 'text_default') потому что токенов сотни и хочется на тс как-то сделать без перечисления ручками
без явной проверки литералов напрашивается только: const token = `${variant}_${style}` as Token
ну вот да) Но мб кто-то знает как без 'as' решить 🤔 Пытаюсь решить так, чтобы в компайл тайме понимать что дизайнер сгенерил токены, которые не коннектятся со свойствами компонента С добавление 'as' этого не добиться
Обсуждают сегодня