Typescript TS-无法从子级调用super()中的公共方法
我有两节课。 一个是父模型类。另一个是它的孩子,因此:Typescript TS-无法从子级调用super()中的公共方法,typescript,oop,inheritance,Typescript,Oop,Inheritance,我有两节课。 一个是父模型类。另一个是它的孩子,因此: 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
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
}
}
}
及
以及:
下面是关于动物的示例,我想调用我的forRequest()
方法,将参数传递给父类
但是,当我调用super.forRequest(…)
时,我得到一个错误:只有基类的公共和受保护的方法可以通过'super'关键字.ts(2340)访问
(如果这是一个解决方案,我可以在父类中重载forRequest()方法,但如果有必要,我不确定这是否是一个好主意)。(在IModel中,我尝试了两种方法,有参数和没有参数)
我想知道这里与TS站点的示例有什么不同,以及为什么代码不起作用
谢谢你的帮助。谢谢。这里的区别在于您为请求声明
函数的方式
将函数指定为forRequest
属性的值,而不是将其指定给原型
您只能访问子方法中的super
如果改为这样做,您应该有访问权限
class DataModel {
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
}
}
}
class LoginModel extends DataModel {
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
...
}
class DataModel {
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
}
}
}
class LoginModel extends DataModel {
constructor() {
super({
email: 'info@email.com',
password: 'test1234'
})
}
public forRequest(): object {
return super.forRequest({
sso: true
})
}
}