#typescript #storybook
#typescript #сборник рассказов
Вопрос:
У меня есть компонент typescript с перечислением :
const enum blah {
one = "one",
two = "two"
}
Без перечисления typescript компонент typscript будет правильно компилироваться и отображаться, но с перечислением в коде этого не произойдет.
Как мне заставить storybook понимать перечисления в typescript?
Комментарии:
1. Работает ли это, если вы сделаете его не удаляемым перечислением? (например,
enum blah
вместоconst enum blah
)?2. да, это так. но я не уверен, разрешено ли мне изменять код
3. Я думаю, вам не следует изменять код продукта только для сборника рассказов
4. «const enum» является избыточным, верно? Потому что «enum» в любом случае неявно является const?
5. @OliverWatkins В TypeScript —
const enum
это другой тип данных, отличный от простогоenum
, потому что сгенерированный код отличается: typescriptlang.org/docs/handbook/enums.html#const-enums
Ответ №1:
Storybook использует Babel для переноса Typescript.
Использование ts-loader
Настройка конфигурации веб-пакета storybook и использование ts-loader
вместо Babel сделали это за меня. Остальная часть моего проекта также настроена, ts-loader
поэтому вам, возможно, придется изучить, как настроить проект с его помощью.
// .storybook/main.js
module.exports = {
// ... other configuration here
// Customize the webpack configuration
webpackFinal: async(config) => {
// We want to use ts-loader for tsx files
config.module.rules.push({
test: /.tsx?$/,
use: 'ts-loader',
});
return config;
}
};
Использование Babel
Я не смог заставить его работать с Babel, но несколько комментариев по этому вопросу предлагают использовать babel-preset-const-enum
.