rel*_*one 3 typescript visual-studio-code typescript-typings
我目前正在为 Mongoose 开发一个插件。作为此的一部分,选项接口需要扩展,因为它可以容纳附加属性。为了实现这一目标,我正在执行以下操作。
我使用声明合并,所以我创建一个像这样的 TypingsFile
一些打字.d.ts
declare Interface QueryFindOneAndUpdateOptions {
MyCustomField: string
}
Run Code Online (Sandbox Code Playgroud)
我还将此打字文件包含在我的 tsconfig.json 中
tsconfig.json
declare Interface QueryFindOneAndUpdateOptions {
MyCustomField: string
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是这不起作用。仅当我在同一文件中声明两个具有相同名称的接口时,声明合并才有效。导入和定义接口会引发命名冲突。
知道如何解决这个问题吗?
好的,答案很简单。基本上我犯了2个错误
我在./src/types中创建了一个 mongoose.d.ts (名称并不重要,但我更喜欢将其命名为我扩展的模块)文件。在这里我像这样扩展我的接口
猫鼬.d.ts
interface SpecialOptions {
verySpecialStuff: string
enable: boolean
}
declare module 'mongoose' {
export interface ModelOptions {
MyNewKey: SpecialOptions
}
}
Run Code Online (Sandbox Code Playgroud)
这将通过MyNewKey扩展 mongoose 中现有的接口 ModelOptions
默认情况下,编译器只会检查./node_modules/@types的类型。因此,您需要告诉它也包含您的自定义类型。为此,需要像这样扩展编译器选项
tsconfig.json
{
// ...
"compilerOptions" : {
// ...
"typeRoots" : [
"src/types",
"node_modules/@types"
]
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
516 次 |
| 最近记录: |