首页 > 解决方案 > 键入'字符串 | 空 | undefined' 不可分配给类型 'string | 不明确的'

问题描述

在使用 Typescript 的 Angular 应用程序上,我有以下内容:

  userId?: number;
  token?: string;

  constructor(private route: ActivatedRoute) { 

    this.route.queryParamMap.subscribe(
      (value: ParamMap) => {
        this.userId = value.has('userId') ? +!value.get('userId') : undefined;
        this.token = value.has('token') ? value.get('token') : undefined;
      }
    );

  }

但是在定义时出现错误token

Type 'string | null | undefined' is not assignable to type 'string | undefined'.
Type 'null' is not assignable to type 'string | undefined'.

我怎样才能使这项工作与定义时一样userId

标签: angulartypescript

解决方案


ParamMap.get返回string | null。由于您token有效地具有 type string | undefined,因此它们不兼容(未定义和 null 在 JS/TS 中是不同的东西)。只需使用无效的合并运算符null处理此案例,同时摆脱(它是多余的)。??has

this.token = value.get('token') ?? undefined;

推荐阅读