В проекте используются sass
для стилизации и typescript
для типизации.
Есть набор констант который используется и стилях и интерфейсах реактовских компонентов. Это цвета.
Сейчас есть отдельно файл colors.scss
вида
$white: white;
$brightest: #f0f0f0
...
И энум
enum Colors {
WHITE = 'white',
BRIGHTEST = 'brightest',
...
}
Хочется избежать поддержки двух файлов. Можно ли как то в рантайме сгенерить тайпскриптовый тип?
Пробовал так
colors.scss
$white: white;
$brightest: #f0f0f0
:export {
white: $white;
brightest: $brightest;
}
somefile.ts
import colors from "colors.scss";
function literalArray<K extends string>(args: K[]): K[] {
return args;
}
const ProxyProperties = literalArray(Object.keys(colors)); // так не работает
// const ProxyProperties = literalArray(['white', 'brightest']); // а так работает
type colorsType = typeof ProxyProperties[number];
((v: colorsType) => console.log(v))("white");
((v: colorsType) => console.log(v))("red");
((v: colorsType) => console.log(v))('');
При таком подходе тип генерится только если явно в функцию передать массив, если его получить через Object.keys
то вместо
type colorsType = 'white' | 'brightest'
получаем
type colorsType = string
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Меня интересует, насколько правильно я генерирую динамику на сайтеДопустим, есть основной шаблон (статика) и для генерации контента используется...