【发布时间】:2021-12-27 03:28:18
【问题描述】:
我有一个第三方库,它的类型在node_modules/thisLibrary/dist/interfaces.d.ts 中声明。 TS 编译器解析从该库导入的函数中使用的类型,因为工具提示会显示它们,并且当我进行不正确的分配时也会出现错误,但是当我想使用库的类型声明变量时(我显然需要这样做),我得到错误Cannot find name 'TypeName':
let myVar: TypeName; // `Cannot find name 'TypeName'`
我的tsconfig.json 中有以下设置:
"moduleResolution": "node",
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"tests/**/*.ts",
"tests/**/*.tsx",
"node_modules/thisLibrary/dist/interfaces.d.ts",
"../node_modules/thisLibrary/dist/interfaces.d.ts", // attempting various paths
],
"typeRoots": [
"node_modules/@types",
"node_modules/thisLibrary/dist",
],
我在一些答案之后添加了include 和typeRoots,但没有任何帮助。编译器看不到它并且库没有导出类型(如在库模块中),所以我无法导入它们:
import {type TypeName} from 'thisLibrary'; // results in "Module 'thisLibrary' has no exported member 'TypeName'".
我该如何解决这个问题?
【问题讨论】:
-
如果你尝试使用来自某个库的内部类型/接口,这意味着出现问题:要么你没有正确使用它,要么库的作者犯了一个错误导出一些类型。在第二种情况下,如果这个库存储在那里,最好在 GutHub 中创建一个问题。
-
这些类型在库的源文件中确实有“export”语句,并且 - 正如我所写 - 编译器看到导入函数中使用的定义并为类型提供工具提示,所以我的理解是他们确实以某种方式出口了它们?它们只是不能使用像
import {TypeName } from 'thisLibrary'这样的导入语句导入。但我不认为他们应该是private。但是当我在自己的代码中编写该名称以创建可以传递给导入函数的变量时,编译器无法识别该名称。所以我想我配置错误,问题是什么? -
很难说我们是否没有指向此库的链接以及您尝试导入的真实类型的界面。你能和我们分享一下吗?
-
你尝试导入什么类型的?
标签: typescript