【问题标题】:Spartacus Extend AuthServiceSpartacus 扩展 AuthService
【发布时间】:2020-03-12 02:17:58
【问题描述】:

是否可以扩展 Auth Service 并为其添加额外的参数?

目前正在尝试扩展,但遇到如下错误:

src/app/service/auth/auth-extend.service.ts(15,3) 中的错误:错误 TS2416:“AuthExtendService”类型中的属性“授权”不可分配给基本类型“AuthService”中的相同属性'。

类型 '(userId: string, password: string, countryCode: string, businessType: string) => void' 不可分配给类型 '(userId: string, password: string) => void'。

src/app/service/auth/auth-extend.service.ts(21,7): error TS2345: Argument of type '{ userId: string;密码:字符串;国家代码:字符串;业务类型:字符串; }' 不能分配给 '{ userId: string; 类型的参数;密码:字符串;国家代码:字符串;业务类型:字符串; }'。

对象字面量只能指定已知属性,但类型 '{ userId: string; 中不存在 'businessType'密码:字符串;国家代码:字符串;业务类型:字符串; }'。你的意思是写“businessType”吗? "

这里的任何人都尝试这样做,例如添加新参数。

【问题讨论】:

  • @marc_s 你找到解决方案了吗?

标签: oauth authorize spartacus-storefront


【解决方案1】:

Typescript 不支持这种开箱即用的重载。一种方法是使用可选参数,例如:

export class AuthExtendService extends AuthService {
  authorize(userId: string, password: string, businessType?: string): void {
    console.log(businessType);
    this.store.dispatch(
      new AuthActions.LoadUserToken({
        userId: userId,
        password: password,
      })
    );
  }  
}

这就是你应该添加额外参数的方式。

【讨论】:

  • 试过这个,但没有用。我也尝试创建/覆盖 LoadUserToken 方法,并在那里添加了新参数,但仍然不成功
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 2017-07-31
相关资源
最近更新 更多