angular - 键入'字符串 | 空 | 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
?
解决方案
ParamMap.get
返回string | null
。由于您token
有效地具有 type string | undefined
,因此它们不兼容(未定义和 null 在 JS/TS 中是不同的东西)。只需使用无效的合并运算符null
处理此案例,同时摆脱(它是多余的)。??
has
this.token = value.get('token') ?? undefined;
推荐阅读
- swift - 查找符合协议的所有类型
- ansible - 使用 ansible 更新服务器组的 SSH 密钥
- c++ - 抛出异常实例后调用终止,核心转储
- python - 如何从 YouTube Analytics api 的 json 文件加载客户端凭据?
- windows - 如何在 Rust 中设置 Windows 目录的隐藏属性?
- objective-c - 使用 for 循环来区分短语
- javascript - 测试 'isChecked' 属性是否已更改
- firebase - Firebase“too_big”错误查询具有大量子项的 ref
- node.js - 如何在mongodb的0对象数组中插入数据
- ionic-framework - 当我调用 storage.get(key) 时,IONIC Storage 为空