当前位置: 首页 > 知识库问答 >
问题:

javascript - typescript中 string & {} 如何理解?

惠野
2023-05-29
type a = 'base' | 'delete' | string
type b = 'base' | 'delete' | (string & {})

let c:a = 
let d:b = 

如果使用了 a 类型,那么当设置 c 的等号后, 是无法触发 'base' | 'delete' 的提示的,因为类型被 string 覆盖了。但是如果使用的是 b 的类型设置,可以触发 'base' | 'delete' 的类型提示,当然依然可以设置为 string 类型。string & {} 这样的实现效果应该如何理解?

共有1个答案

伍心水
2023-05-29

type a = 'base' | 'delete' | string 所示。这意味着 a 类型可以是 'base' 或 'delete',也可以是任意字符串 string。

交叉类型(&)可以将多个类型合并为一个类型,并包含其中所有属性和方法。使用交叉类型后,string & {} 的实现相当于一个空接口类型,它可以保留原有类型的特性,同时又使联合类型中的字符串字面量类型能够发挥正确的约束作用,如 type b = 'base' | 'delete' | (string & {}) 所示

类型 b 被定义为 'base' | 'delete' | (string & {}),它与类型 a 的区别在于使用了交叉类型将 string 与空接口类型合并。这样就使得 b 类型拥有了 a 类型的所有取值范围,同时还可以正确地约束变量的取值为 'base' 或 'delete'。因此,当设置变量 d 的值为 'base' 或 'delete' 时,TypeScript 将正确地给出类型提示。

 类似资料:
  • String 对象用于处理文本(字符串)。 语法 String 对象属性 下表列出了 String 对象支持的属性: 序号 属性 & 描述 实例 1. constructor 对创建该对象的函数的引用。 输出结果: 2. length 返回字符串的长度。 3. prototype 允许您向对象添加属性和方法。 String 方法 下表列出了 String 对象支持的方法: 序号 方法 & 描述 实

  • 本文向大家介绍在JavaScript中NaN如何转换为String?,包括了在JavaScript中NaN如何转换为String?的使用技巧和注意事项,需要的朋友参考一下 您可以尝试运行以下命令以了解如何在JavaScript中将NaN转换为String- 示例

  • 想动态的获取并修改 audio 的属性, vscode 报错: 修改为: vscode 报错: 这个如何处理呢?

  • 我有两个不同类型的对象,我想用一个对象指定另一个。 的接口有一个,而到

  • 现有一个a对象和b对象,a对象为服务器返回的数据,b对象为对a对象加工后的数据。 类型为: 由于A数据并没有c字段, 我要加c字段,但是加c字段又提示A没有c字段,如: 还是说我直接把类型定义为:

  • 问题内容: 有人问我这个问题: 根据以上详细信息,在以下代码的println语句之前创建了多少String对象和多少参考变量? 我的回答是,此代码片段的结果是spring winter spring summer 有两个参考变量s1和s2。总共创建了八个String对象,如下所示:“ spring”,“ summer”(丢失),“ spring summer”,“ fall”(丢失),“ spri