网站搜索

typescript - Angular 类型错误:无法定义属性“userId”:对象不可扩展


好的,所以我刚刚把一个相当复杂的应用从 Angular 8 升级到 9(也升级到了 10,但这个错误是在 9 中出现的)

我们有一个函数,如下:

logUserActivity(request: UserActivityRequest): Observable<void> {
        const url = `${this.baseUrl}/log-activity`;

        request.userId = this.authenticationTokenService.userId();
        request.organisationId = isAuthenticationActivity(request.activityType) ? null : this.authenticationTokenService.organisationId();

然而,自从升级后,我们现在得到的是:

ERROR TypeError: can't define property "userId": Object is not extensible

这个类看起来像:

export class UserActivityRequest {
    userId: string;
    activityType: UserActivityType;
    organisationId: string;
    moduleId: Modules;
    dateCreated: Date;

    constructor(
        activityType: UserActivityType,
        moduleId: Modules = null,
        dateCreated: Date = null
    ) {
        this.activityType = activityType;
        this.moduleId = moduleId;
        this.dateCreated = dateCreated;
    }
}

如果我执行以下操作,错误就会消失:

request = {
            ...request,
            userId: this.authenticationTokenService.userId(),
            organisationId: isAuthenticationActivity(request.activityType) ? null : this.authenticationTokenService.organisationId()
        }

但我想了解问题出在哪里,因为在其他地方看到的实例都没问题,所以很明显我对新的 Angular/TypeScript/Ngrx 版本有些地方不了解

提前感谢