javascript 我的typescript类型声明文件不工作

8zzbczxx  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(138)

我试图通过以下教程学习如何首次发布TypeScript NPM包。然而,当我在TypeScript Node.js项目中使用该包时,我发现它无法识别该包的类型文件。我使用的所有其他NPM包都有功能类型系统,除了我的。似乎类型安全无法正常工作。以下是项目结构:
我有一个名为“easyerrormodule.ts”的文件,我在其中定义了我的类型,例如:

export interface comonErrorAttributes{
string?: string[]
number?: number[]
}

export interface commonGeneralErrorRoleAttributes{
role?: string
setRole?: string
}

export interface  stringLengthErrorValueAttributes{
string?: string[]
}

export interface stringLengthErrorShortLengthAttributes{
shortMinLength?: number
shortMaxLength?: number
}

我也有这个文件与我的逻辑称为globaltype.ts;

import { comonErrorAttributes, commonGeneralErrorRoleAttributes, stringLengthErrorValueAttributes, stringLengthErrorShortLengthAttributes, 
stringLengthErrorLongStringLengthAttributes, stringLengthErrorLongStringAttributes} from "./easyerrormodule"

class GlobalErrorClass {
   logics run here
 }

export const errorInstance = new GlobalErrorClass()

我的typescript配置文件:

{
 "compilerOptions": {

/* Language and Environment */
"target": "es2015",                                  

/* Modules */
"module": "ES2015",                                
   

/* Emit */
 "declaration": true,                              

// "outFile": "./",                                
 "outDir": "./build/esm",                                

// "allowSyntheticDefaultImports": true,             
"esModuleInterop": true,                             
// "preserveSymlinks": true,                         
"forceConsistentCasingInFileNames": true,            

/* Type Checking */
"strict": true,                                     

/* Completeness */
// "skipDefaultLibCheck": true,                      
"skipLibCheck": true,                                
"typeRoots": ["./node_modules/@types/globaltype.d.ts"]
 },
 }

我的package.json文件:

{
 "name": "errorcatchernode",
 "version": "1.0.4",
 "description": "basic error handling module for node basic projects",
  "main": "build/globaltype.js",
  "types": "build/easyerrormodule.d.ts",
  "scripts": {
   "build": "tsc"
   },
  "license": "ISC",
  "devDependencies": {
   "typescript": "^5.0.4"
   }
   }

我错过了什么?

umuewwlo

umuewwlo1#

您的包具有TS导出

declare module "errorcatchernode" {
   export interface comonErrorAttributes{ /* ... */ }
   export interface commonGeneralErrorRoleAttributes{ /* ... */ }
   export interface stringLengthErrorValueAttributes{ /* ... */ }
   export interface stringLengthErrorShortLengthAttributes{ /* ... */ }
}

但你真正的出口

declare module "errorcatchernode" {
   class GlobalErrorClass { /* ... */}
   let instance: GlobalErrorClass;
   export default instance;
}

很明显这样不行。
如果要 * 再出口 * 您的类型,您需要什么

// globaltype.ts
export * from './easyerrormodule'
export default new GlobalErrorClass()

并将package.json更改为使用

"main": "build/globaltype.js",
  "types": "build/globaltype.d.ts",

相关问题