当前位置: 首页 > 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

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

http://www.dtcms.com/a/117027.html

相关文章:

  • 数据仓库的核心架构与关键技术(数据仓库系列二)
  • 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详解
  • linux安装ollama
  • 【湖南大学】2025我们该如何看待DeepSeek
  • 【KNN算法详解(用法,优缺点,适用场景)及应用】-CSDN博客
  • 基于springboot体育俱乐部预约管理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • C++的多态 - 下
  • 架构思维: 数据一致性的两种场景深度解读
  • MySQL SQL 优化的10个关键方向
  • 时间复杂度和空间复杂度
  • JGraphT 在 Spring Boot 中的应用实践
  • JavaScript之Json数据格式