使用 Typescript 4.2.3,我正在从 Typescript 构建一个包。当我安装包时,它在node-moduleshas.js和.d.tsfiles 中的条目正如预期的那样。
??? dist
? ??? index.d.ts
? ??? index.js
? ??? index.test.d.ts
? ??? index.test.js
??? package.json
Run Code Online (Sandbox Code Playgroud)
以下是内容package.json:
{
"name": "postgres-base-class",
"version": "0.1.3",
"description": "Abstract class to handle an Postgres Client connection, provding execSql method to extending classes",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"devDependencies": {
<omitted>
},
"dependencies": {
"pg": "^8.5.1"
},
"scripts": {
"test": "jest",
"prepack": "npm run clean && npm test && tsc --declaration",
"clean": "tsc --build --clean"
},
"files": [
"dist/"
],
"author": "John Bito",
"license": "UNLICENSED",
"private": true
}
Run Code Online (Sandbox Code Playgroud)
当我尝试扩展包中定义的类时,受保护方法的参数和返回类型any在VSCode中显示,并且tsc没有检测到错误参数。相反,它似乎将包视为没有类型的 JS 包。
我该怎么做才能使tsc安装包的位置可以使用包中的类型?
以下是内容index.d.ts:
??? dist
? ??? index.d.ts
? ??? index.js
? ??? index.test.d.ts
? ??? index.test.js
??? package.json
Run Code Online (Sandbox Code Playgroud)
execSql导入包的方法的类型似乎是(根据VSCode):
execSql(query: any): Promise<any>
Run Code Online (Sandbox Code Playgroud)
也就是说的内容相匹配index.js所产生tsc(摘录):
{
"name": "postgres-base-class",
"version": "0.1.3",
"description": "Abstract class to handle an Postgres Client connection, provding execSql method to extending classes",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"devDependencies": {
<omitted>
},
"dependencies": {
"pg": "^8.5.1"
},
"scripts": {
"test": "jest",
"prepack": "npm run clean && npm test && tsc --declaration",
"clean": "tsc --build --clean"
},
"files": [
"dist/"
],
"author": "John Bito",
"license": "UNLICENSED",
"private": true
}
Run Code Online (Sandbox Code Playgroud)
小智 1
据我所见,依赖项pg的依赖项postgres-base-class被pg主项目的依赖项所掩盖。
pg显式导入,请添加@types/pg到您的 main 的devDependencies.pg不在主项目的依赖项中(以避免它遮蔽子项目的依赖项类型),并添加@types/pg到您的postgres-base-class[dev] 依赖项| 归档时间: |
|
| 查看次数: |
846 次 |
| 最近记录: |