M U*_*M U 2 node.js typescript feathersjs
我正在使用FeathersJS和TypeScript。由于它仍在开发中(用于羽毛的TS),我发现我需要重写类型以使其能够适应我的情况(例如,可以禁用或启用分页,并且类型应能处理,但此刻不行) 。
在我的tsconfig.json中,我有以下内容:
"typeRoots": [ /* List of folders to include type definitions from. */
"./types",
"node_modules/@types"
],
Run Code Online (Sandbox Code Playgroud)
顺序并不重要,因为我也首先尝试过使用node_modules。
我把文件夹feathersjs__feathers中./types只有index.d.ts(删除package.json)从DefinitelyTyped类型的精确副本。
这行引起了问题: import * as self from '@feathersjs/feathers';
TS7016找不到模块'@ feathersjs / feathers'的声明文件。“ C:/ Users / marek / dev / system / api — kopia/node_modules/@feathersjs/feathers/lib/index.js”隐式具有“ any”类型。尝试
npm install @types/feathersjs__feathers是否存在或添加包含以下内容的新声明(.d.ts)文件declare module 'feathersjs__feathers';
我试图将添加package.json到我的文件夹中,如下所示:
{
"name": "@types/feathersjs__feathers",
"version": "0.0.1",
"types": "index.d.ts"
}
Run Code Online (Sandbox Code Playgroud)
但这并不能解决该问题。如果我安装了@types/feathersjs__feathers它node_modules,则没有错误,但是无论typeRoots它以什么顺序从该类型中获取类型,而不是从我的替代中获取类型。
有什么解决办法吗?
通常使用./types和的配置index.d.ts都可以,例如,因为feathers-mongoose我在那里输入了自己的文字,并且它们可以正常工作。问题只在于导入自我...
typeRoots只能帮助TypeScript编译器为types选项(或/// <reference types="..."/>指令)找到要加载的文件,以使declare module "..." { ... }它们包含任何全局声明。但是index.d.ts文件为@feathersjs/feathers不使用declare module "..." { ... }; 它旨在通过TypeScript的主模块解析过程作为模块本身找到。该过程不兑现typeRoots,node_modules/@types当在中找到未类型化的模块时,很难进行查找node_modules。为了使模块分辨率看起来更合适,您必须使用baseUrl和paths选项:
{
"compilerOptions": {
// ...
"baseUrl": ".",
"paths": {
"@feathersjs/feathers": ["types/feathersjs__feathers"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,这似乎是糟糕的设计,但是TypeScript团队曾经说过这种行为是故意的,所以我认为不值得提出一个错误来要求他们进行更改。
(我注意到“堆栈溢出”“相关”小部件找到了一个基本上可以回答您问题的答案,尽管IMO并不像我的回答那么明确。)
| 归档时间: |
|
| 查看次数: |
676 次 |
| 最近记录: |