“module/index.d.ts”和“@types/module/index.d.ts”之间的打字稿冲突
Posted
技术标签:
【中文标题】“module/index.d.ts”和“@types/module/index.d.ts”之间的打字稿冲突【英文标题】:Typescript conflict between "module/index.d.ts" and "@types/module/index.d.ts" 【发布时间】:2018-01-25 00:38:12 【问题描述】:我有一个第 3 方模块(“handsontable”),它在模块文件夹(“/node_modules/handsontable/handsontable.d.ts”)中有过时的定义,但在 /node_modules/ 中有正确的“index.d.ts” @types 文件夹。 所以结构如下:
/node_modules
/@types
/handsontable
/index.d.ts (LATEST)
/handsontable
/handsontable.d.ts (OUTDATED)
/src/app.ts
我正在使用 es6 模块,我不想将 handsontable 暴露给全局,所以当我在 app.ts 中编写时:
import ht from 'handsontable'
let options: ht.Options
它显示错误,因为ht.Options
不存在于/node_modules/handsontable/handsontable.d.ts
中,而它仅存在于/node_modules/@types/handsontable/index.d.ts
中
是否有强制打字稿在import m from "module"
期间从/node_modules/@type/module
加载类型信息?
这是我的 tsconfig.json:
"exclude": [
"node_modules","build","dist", "typings","types"
],
"include": [
"./src/**/*.ts"
],
"typeAcquisition":
"enable": true
// "exclude": [ //tried that too
// "handsontable"
// ]
,
"compileOnSave": true,
"compilerOptions":
"baseUrl": "node_modules",
"paths":
"src/*":["../src/*"],
"app/*":["../src/*"],
"*":["../src/*", "./node_modules"]
,
"target": "es2016",
//"module": "es6", //es6 is not compatible with webpack.config.ts
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"allowJs": true,
"outDir": "./build",
"experimentalDecorators": true,
"lib": [
"dom",
"es6"
]
Typescript 版本:2.4.2
【问题讨论】:
你的tsconfig
文件中有什么?
刚刚用信息更新了问题
首先您需要从排除的文件中删除类型。接下来你需要添加handsontable的类型,最后你需要排除problamatic类型。
你能提供一个小代码示例吗?我试过你说的没用,但我可能搞砸了路径相对论之类的
我尝试了所有组合,到目前为止我看到“node_modules/module/module.d.ts”总是优先于“node_modules/@types/module/index.d .ts" :-(
【参考方案1】:
正如评论中提到的"node_modules/module/module.d.ts"
总是优先于"node_modules/@types/module/index.d.ts"
所以到目前为止我能找到的最好的解决方法是映射 tsconfig.json/compilationOptions/paths:
compilationOptions:
baseUrl:"node_modules",
paths:
"handsontable":["@types/handsontable"]
帮助我找到它的是标志 tsc --traceResolution
【讨论】:
这是 tsc --traceResolution 不是 tsc --traceResolutions以上是关于“module/index.d.ts”和“@types/module/index.d.ts”之间的打字稿冲突的主要内容,如果未能解决你的问题,请参考以下文章
css Erstes oder letztes Element von einem Typ selektieren
css CSS-Selektoren:Erstes oder letztes Element von einem Typ
如何解决xp系统 ‘未安装ADO’‘ 请安装MDAC_typ。exe安装这个如何解决 不要说安装纯洁系统啥的。
java 为jersery添加json支持(jersery实际上将对象转换为XML然后转换为JSON,以下示例为media typ