перечисления ‘const’ не поддерживаются в сборнике рассказов при использовании компонентов my Typescript

#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 .

Источники