Есть ли способ объявить определенное имя модуля для сгенерированного файла .d.ts (в проекте javascript)? - PullRequest
3 голосов
/ 17 октября 2019

Есть ли способ объявить другое имя модуля для сгенерированного файла .d.ts?

tsc генерирует declare module "index" { вместо declare module "@myorg/my-pkg" (что соответствует атрибуту name в package.json).

Примечание. Это чистый проект javascript, в котором я пытаюсь создавать типы.

/* Generated with tsc --init via TypeScript 3.7.0-beta */
{
  "compilerOptions": {
    "module": "commonjs",                     /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
     "allowJs": true,                         /* Allow javascript files to be compiled. */
     "declaration": true,                     /* Generates corresponding '.d.ts' file. */
    "outFile": "./lib/index.js",              /* Concatenate and emit output to single file. */
    "emitDeclarationOnly": true,              /* Only emit .d.ts files. */
    "strict": true,                           /* Enable all strict type-checking options. */
    "esModuleInterop": true,                  /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
    "forceConsistentCasingInFileNames": true  /* Disallow inconsistently-cased references to the same file. */
  },
  "include": [
    "js/**/*"
  ]
}

1 Ответ

1 голос
/ 24 октября 2019

К сожалению, типы не могут быть выведены в один файл из коробки. Существует открытое предложение по добавлению «связывания типов» (# 4433) для добавления функции. Есть также сторонние библиотеки для помощи в этом.

Еще одно решение, если вы согласны с выводом нескольких файлов, - это указание outDir вместо outFile. Это было решение, которое я выбрал, установив "outDir": "./types" в tsconfig.json и установив "types": "./types/index.d.ts" в package.json. Это сработало, как я и ожидал, при импорте модуля в другие проекты.

...