我刚开始使用typescript进行NodeJS Server开发,我遇到了以下错误:
./app/api/shoutbox/shoutbox.dao.ts
error TS2339: Property 'statics' does not exist on type 'Schema'
./app/api/shoutbox/shoutbox.controller.ts
error TS2339: Property 'getAll' does not exist on type 'Model<Document>'.
./app/api/shoutbox/shoutbox.controller.ts
error TS2339: Property 'catch' does not exist on type 'Promise<{}>'.
我正在使用Webpack和TS-Loader。我引用了
/// <reference path="mongoose/mongoose.d.ts" />
/// <reference path="node/node.d.ts" />
/// <reference path="express/express.d.ts" />
/// <reference path="mime/mime.d.ts" />
/// <reference path="serve-static/serve-static.d.ts" />
/// <reference path="lodash/lodash.d.ts" />
/// <reference path="bluebird/bluebird.d.ts" />
// shoutbox.model.ts
import mongoose = require('mongoose');
var _shoutboxSchema = {
author: {
type: String,
required: true
},
created: {
type: Date,
default: Date.now
},
msg: String
};
export default new mongoose.Schema(_shoutboxSchema);
// shoutbox.dao.ts
import mongoose = require('mongoose');
import Promise = require('bluebird');
import _ = require('lodash');
import shoutboxSchema from './shoutbox.model';
shoutboxSchema.statics.getAll = ():Promise<any> => {
var _promise = (resolve:Function, reject:Function):void => {
var _query = {};
Shoutbox
.find(_query)
.exec((err, shoutbox) => {
err ? reject(err)
: resolve(shoutbox);
});
};
return new Promise (_promise);
};
var Shoutbox = mongoose.model('Shoutbox', shoutboxSchema);
export default Shoutbox;
// shoutbox.controller.ts
import ShoutboxDAO from './shoutbox.dao';
import express = require("express");
export class ShoutboxController {
static getAll(req:express.Request, res:express.Response):void {
ShoutboxDAO
.getAll()
.then(shoutbox => res.status(200).json(shoutbox))
.catch(error => res.status(400).json(error));
}
}
我已经尝试了很长一段时间,但我无法摆脱错误。
代码本身按预期运行但我不断收到这些错误。
我感谢任何帮助。
答案 0 :(得分:0)
我在使用DefinitelyTyped github repo中的mongoose.d.ts时遇到了类似的问题。它似乎没有正确匹配mongoose javascript。我改为使用https://github.com/vagarenko/mongoose-typescript-definitions中的那个。