我有一个为扩展npm包而编写的声明文件,但是好像没有声明一个方法,我尝试声明它,但是得到一个错误。请帮助我。
现有d.ts文件的结构:
declare module "mongoose" {
...
class Document {}
interface Document extends MongooseDocument, NodeJS.EventEmitter, ModelProperties {
increment(): this;
remove(fn?: (err: any, product: this) => void): Promise<this>;
...
}
}
我尝试将Document方法的deleteOne添加到接口。我的custom.d.ts:
declare module "mongoose" {
interface Document {
deleteOne(fn?: (err: any, product: this) => void): Promise<this>;
}
}
但是我仍然收到错误消息“属性'deleteOne'在类型上不存在”。
如果需要,这是我的tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"removeComments": true,
"esModuleInterop": true,
"moduleResolution": "node",
"allowJs": true,
"allowSyntheticDefaultImports": true,
"pretty": true,
"resolveJsonModule": true,
"sourceMap": true,
"target": "ES2018",
"outDir": "dist",
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*"
]
}
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"dist",
"**/*.spec.ts"
]
}
位于'src /'目录中的我的custom.d.ts文件。
谢谢!
答案 0 :(得分:1)
定义猫鼬界面
cv2.__version__
用法
// types/mongoose/index.d.ts
declare module 'mongoose' {
namespace Mongoose {
export interface MyInterface {
name: number;
}
}
}
我还向我的tsconfig文件中添加了// app.ts
import mongoose, { Mongoose } from 'mongoose';
const a: Mongoose.MyInterface = {
name: 122
};
有此帮助
答案 1 :(得分:0)
好!现在,我知道这是ts-node的预期行为:
https://github.com/TypeStrong/ts-node#help-my-types-are-missing
我已经在tsconfig.json中配置了路径设置,现在一切正常:
"paths": {
"mongoose": ["src/custom.d.ts"],
"*": [
"node_modules/*"
]
}