首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >输入'string \ null \ undefined‘不能分配到输入'string’

输入'string \ null \ undefined‘不能分配到输入'string’
EN

Stack Overflow用户
提问于 2021-08-28 22:54:39
回答 2查看 351关注 0票数 0

在一个使用打字本的角度应用程序上,我有以下内容:

代码语言:javascript
运行
复制
  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时得到了错误

代码语言:javascript
运行
复制
Type 'string | null | undefined' is not assignable to type 'string | undefined'.
Type 'null' is not assignable to type 'string | undefined'.

如何使此工作与定义userId时相同

EN

回答 2

Stack Overflow用户

发布于 2021-08-28 23:12:33

ParamMap.get返回string | null。因为您的token实际上有string | undefined类型,所以它们是不兼容的(在JS/TS中,未定义和null是不同的东西)。只需使用null处理nullish coalescing operator ??的情况,同时也消除has (这是多余的)。

代码语言:javascript
运行
复制
this.token = value.get('token') ?? undefined;
票数 0
EN

Stack Overflow用户

发布于 2021-08-29 03:35:37

类型脚本中任何变量的默认值都是未定义的,您已经将变量声明为可空类型(?-nullable类型)。因此,如果没有为其赋值,则将赋值为null。因此,它不能采取未定义的,因为您已经声明为空可类型。将定义的值更改为空,如下所示。this.userId = value.has('userId')?+!value.get('userId'):null;this.token =value.has(‘令牌’)?Value.get(‘令牌’):null;

检查上面的代码是否工作,如果不工作,那么检查您在ParamMapv中声明的令牌变量的类型),或者共享分配了令牌值的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68968666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档