【发布时间】:2019-04-07 23:57:33
【问题描述】:
我试图从子类调用父类的函数,但关键字super 是抛出错误。我正在使用打字稿,这是项目中 package.json 的 sn-p。
{
"scripts": {
"build": "tsc",
"start": "nodemon",
"prod": "npm run build && npm run start"
},
"dependencies": {
"body-parser": "^1.18.3",
"dotenv": "^6.1.0",
"express": "^4.16.4"
},
"devDependencies": {
"@types/body-parser": "^1.17.0",
"@types/dotenv": "^4.0.3",
"@types/express": "^4.16.0",
"@types/node": "^10.12.2",
"nodemon": "^1.18.5",
"ts-node": "^7.0.1",
"tslint": "^5.11.0",
"typescript": "^3.1.6"
}
}
父类
export default class baseController {
public response = (message = "", status = 200) => (
req: Request,
res: Response
) => {
return res.status(status).send({
status: true, // true if success, false if faliure
message: message, // message to display incase of error
payload: []
});
};
}
子类
import BaseController from "../baseController";
export default class UsersController extends BaseController {
constructor() {
super();
}
public fetchUsers = async () => {
return super.response("testing");
};
}
代码在return super.response("testing"); 行崩溃,错误为super keyword unexpected here。
这是我的tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es6",
"noImplicitAny": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "./dist",
"pretty": true,
"baseUrl": "./src",
"alwaysStrict": true,
"paths": {
"*": ["node_modules/*", "src/types/*"]
}
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules"]
}
【问题讨论】:
-
您注意到
BaseController曾经小写和大写吗? -
@CristianTraìna 为基本控制器添加了缺少的导入语句,并在所有相同的情况下进行了尝试,仍然遇到问题。
-
我对 TypeScript 不是很熟悉,但是对于普通的 JS,你需要在基类中有一个构造函数才能在子类中调用 super()
-
@Jacob 也试过了,没用
-
尝试像这样创建函数:
public async fetchUsers() {}而不是将其分配给包含所有函数的变量
标签: javascript node.js typescript express tsconfig