【发布时间】:2019-05-24 06:33:38
【问题描述】:
我有两节课。 一个是父模型类。另一个是它的孩子,所以:
import { IModel } from '../shared'
export default class DataModel implements IModel {
private data: {[key: string]: any} = {}
public constructor(data: {[key: string]: any}) {
this.data = data
}
// ... other methods
public forRequest = (params?: {[key: string]: any}): object => {
return {
...this.data,
...params
}
}
}
和
import { IModel } from '../shared'
import DataModel from './_'
export default class LoginModel extends DataModel implements IModel {
constructor() {
super({
email: 'info@email.com',
password: 'test1234'
})
}
public forRequest = (): object => {
return super.forRequest({
sso: true
})
}
}
和:
export interface IModel {
forRequest(params?: {[key: string]: any}): object
...
}
按照https://www.typescriptlang.org/docs/handbook/classes.html 和动物的例子,我想调用我的forRequest() 方法,将参数传递给父类。
但是,当我调用 super.forRequest(...) 时,我收到错误:只有基类的公共和受保护方法才能通过 'super' keyword.ts(2340) 访问。
(如果这可能是一个解决方案,我可以在父类中重载 forRequest() 方法,如果有必要,但不确定这是否是个好主意)。 (在 IModel 中我尝试了两种方式,有参数和没有参数)
我想知道这里与 TS 网站上的示例有何不同,以及为什么代码不起作用。
任何帮助表示赞赏。谢谢。
【问题讨论】:
标签: typescript oop inheritance