有没有办法为生成的 .d.ts 文件(在 javascript 项目中)声明特定的模块名称?
Is there a way to declare a specific module name for a generated .d.ts file (in a javascript project)?
有没有办法为生成的 .d.ts
文件声明不同的模块名称?
tsc 生成 declare module "index" {
而不是 declare module "@myorg/my-pkg"
(这将匹配 package.json
中的 name
属性)。
注意:这是在我尝试生成类型的纯 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/**/*"
]
}
不幸的是,类型无法开箱即用地输出到单个文件。有 an open proposal to add "type bundling" (#4433) 添加功能。还有 3rd 方库可以帮助解决这个问题。
如果您可以输出多个文件,另一种解决方案是指定 outDir
而不是 outFile
。这是我选择的解决方案,在tsconfig.json
中设置"outDir": "./types"
,在package.json
中设置"types": "./types/index.d.ts"
。将模块导入其他项目时,这按我预期的方式工作。
有没有办法为生成的 .d.ts
文件声明不同的模块名称?
tsc 生成 declare module "index" {
而不是 declare module "@myorg/my-pkg"
(这将匹配 package.json
中的 name
属性)。
注意:这是在我尝试生成类型的纯 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/**/*"
]
}
不幸的是,类型无法开箱即用地输出到单个文件。有 an open proposal to add "type bundling" (#4433) 添加功能。还有 3rd 方库可以帮助解决这个问题。
如果您可以输出多个文件,另一种解决方案是指定 outDir
而不是 outFile
。这是我选择的解决方案,在tsconfig.json
中设置"outDir": "./types"
,在package.json
中设置"types": "./types/index.d.ts"
。将模块导入其他项目时,这按我预期的方式工作。