加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
04_联合类型.ts 1.59 KB
一键复制 编辑 原始数据 按行查看 历史
韩旭明 提交于 2023-01-27 16:33 . 修改目录
/**
* 联合类型,使用 | 关键字:
* 联合类型 表示 取值 可以为 多种类型 的一种
* 即代表了一组类型的可用集合,只要 最终赋值的类型 属于 联合类型 的成员之一,就可以认为符合这个联合类型,
* 联合类型对其成员并没有任何限制,除了对同一类型字面量的联合,还可以将各种类型混合到一起
*
* 需要注意的是:
* 对于联合类型中的函数类型,需要使用括号()包裹起来
* 函数类型并不存在字面量类型,因此这里的 (() => {}) 就是一个合法的函数类型
* 同时可以在联合类型中进一步嵌套联合类型,但这些嵌套的联合类型最终都会被展平到第一级中
*
* 联合类型的常用场景之一是通过多个对象类型的联合,来实现手动的互斥属性,
* 即这一属性如果有字段1,那就没有字段2
* */
//类型标注 中使用 联合类型: string | number
let myFavoriteNumber: string | number = 'two';
let myFavoriteNumberA: string | number = 2;
//接口中使用联合类型:true | string | 599 | {} | (() => {}) | (1 | 2)
interface Tmp {
mixed: true | string | 599 | {} | (() => {}) | (1 | 2)
}
//联合类型:通过多个对象类型的联合,来实现手动的互斥属性
interface Tmp1 {
user:
{
vip: true;
expires: string;
}
| {
vip: false;
promotion: string;
};
}
declare var tmp: Tmp1;
if (tmp.user.vip) {
console.log(tmp.user.expires);
}
//export {}:解决“无法重新声明块范围变量”错误提示问题
export { }
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化