Typescript просто генерирует «export {};» в файле d.ts

#typescript

#typescript

Вопрос:

Когда я запускаю tsc команду для создания моего скомпилированного dist каталога, typescript, похоже, генерирует пустой / неправильный общий файл.ts.

Это мой tsconfig.json:

 {
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es2020",
    "moduleResolution": "Node",
    "noImplicitAny": true,
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "outDir": "dist",
    "strict": true,
    "declaration": true,
    "declarationMap": true
  },
  "lib": ["es2020"],
  "compileOnSave": true,
  "include": [
    "src"
  ]
}
 

Это мой src/index.ts :

 class Test {
   method = (string: string) => {
      console.log(string)
   }
}

module.exports = Test
 

А потом , после того как я побегу $ tsc , я получу это в свой dist/index.d.ts :

 export {};
//# sourceMappingURL=Test.d.ts.map
 

Импортируя пакет в новый проект в качестве зависимости от npm, я могу подтвердить, что импорт работает. Я могу импортировать Test и успешно выполнить const test = new Test; test.method('hello world') . Это только тот .d.ts файл, который не работает.

Я использую typescript v4.0.5

Комментарии:

1. Похоже, у вас нет ts файлов для переноса, поскольку у вас есть только один js файл src ?

2. @tmhao2005 извините, что это на самом деле src/index.ts , я просто неправильно ввел это в вопрос SO. Теперь я исправил вопрос.

3. Хммм. Какую версию typescript вы используете?

4. @tmhao2005 v4.0.5

5. Странная вещь, о которой я знаю, заключается в том, что ваш код написан в cjs стиле, который должен быть esnext стилем, а не стилем, что, вероятно, является проблемой. Можете ли вы изменить это и повторить попытку?

Ответ №1:

Я решил, выполнив следующее:

  1. Изменено tsconfig.json путем обновления "module": "commonjs" до "module": "es2020"
  2. В .ts файле измените с module.exports = Test на export default Test

После этих изменений .d.ts файлы были сгенерированы правильно. Проблема заключалась в том, что я смешивал синтаксис / настройки commonjs и ES2020.