当前位置: 首页 > news >正文

ArkTS语言入门细节之联合类型

引言

臭宝们,接下来,说一点细枝末节的东西。

变量声明

这样的变量声明,臭宝们(TypeScript除外)或许见得不多,这代表可选声明变量。

name?:string;

那怎么用呢?下面举例


export  class SayName {
  name:string = '';
  constructor(name?:string) {
    this.name = name??"张三";
  }
  GetName(){
    return this.name
  }
}

在其他页面中引用

//这是张三
Say:SayHello= new SayHello();

//这是李四
Say:SayHello= new SayHello("李四");

为什么会这样呢? 关键在于下面这段代码。name为可选类型,表示用户在创建对象后可以不对name进行赋值。

constructor(name?:string) {
    this.name = name??"张三";
  } 

那么臭宝就要问了,如果不赋值,张三哪来的?这就要看函数里的语句了。这段代码的意思是,如果name的值是undefined(没赋值),那么就用张三赋值给name。

this.name = name??"张三";

再看这一段变量声明,这段会是什么意思呢?

export  class SayName {
  name:string|undefined=undefined;
  constructor(name?:string) {
    this.name = name;
  }
  GetName(){
    return this.name
  }
}

结果竟是这样的,为什么呢?

//这是空值
Say:SayHello= new SayHello();

//这是李四
Say:SayHello= new SayHello("李四");

这是因为,变量声明变了,这个声明不是单纯的字符串类型了,而是联合类型,它可以是undefined类型也可以是字符串类型,臭宝们不禁又要问,还能这么玩? 是的,这语言玩的很花,很独特,在没有传值时,name默认是undefined类型(因为初始化就是undefined),当用户输入了字符串后,它就成了字符串类型了,但我要说联合类型并不等于单一类型,也就是说string|undefined不等于string。

name:string|undefined=undefined;

如何这么写,会报错

name1:string|undefined='我是联合'
name2:string='我是字符串'
//这一步,会报错
name2 = name1

这些知识会在后面的内容中用到,让臭宝们的代码简洁,下一节见。

相关文章:

  • 数据仓库的核心架构与关键技术(数据仓库系列二)
  • Minio文件系统
  • 生鲜果蔬便利店实体零售门店商城小程序
  • 底盘---麦克纳姆轮(Mecanum Wheel)
  • 重温java 系列一 Java基础
  • xv6-labs-2024 lab2
  • Python高阶函数-map
  • 接口自动化测试框架搭建
  • Pythia 使用说明
  • GPT-4o 的“图文合体”是怎么做到的
  • 成为社交场的导演而非演员
  • STM32——DAC转换
  • C++类间的 “接力棒“ 传递:继承(下)
  • Ubuntu 服务器上运行相关命令,关闭终端就停止服务,怎么才能启动后在后台运行?
  • 多语言测试专项
  • 嵌入式工程师多线程编程(三)裸机编程、RTOS、Linux及多线程编程的全面对比
  • Linux脚本基础详解
  • 【AI】什么是Rag技术
  • Win10安装GCC/G++运行环境
  • 大数据学习(100)-kafka详解
  • php做网站会遇到的问题/网站链接查询
  • 付费网站建设/池州网站seo
  • 网站建设中的时尚资讯/免费信息推广平台
  • 嵌入式软件开发培训机构/北京网站优化推广方案
  • 创建网站的好处/什么是seo关键词
  • 网站建设负责人证明/郑州网络推广