「前端+鸿蒙」鸿蒙应用开发-TS声明和数据类型

在鸿蒙应用开发中使用 TypeScript (TS) 可以带来类型安全和现代编程语言特性的好处。TypeScript 是 JavaScript 的一个超集,它添加了类型注解、接口、类和其他特性。以下是 TypeScript 快速入门的指南,包括声明变量和使用数据类型。

TS快速入门-声明和数据类型

基本类型

TypeScript 支持多种基本数据类型,包括:

  • number:整数或浮点数。
  • string:文本数据。
  • boolean:逻辑实体,值为 true 或 false。
  • array:类似数组的类型,可以用 string[] 表示字符串数组。
  • tuple:元组类型,允许表示一个固定长度的数组,其元素类型可以不同。
  • enum:枚举类型,用于定义命名的常数集合。
  • any:用于表示任意类型,不推荐在生产代码中广泛使用,因为它会失去类型检查的好处。
  • void:与 any 相反,表示没有任何类型,通常用作没有返回值的函数的返回类型。
  • nullundefined:TypeScript 中的这两个类型是所有类型的子类型,可以赋值给任何类型。
声明变量

在 TypeScript 中声明变量时,需要指定其类型:

let age: number = 30;
let name: string = '张三';
let isStudent: boolean = true;
let numbers: number[] = [1, 2, 3];
let point: [number, number] = [10, 20]; // 元组
enum Color {Red, Green, Blue}
let favoriteColor: Color = Color.Red;
类型别名和接口

使用类型别名(type)或接口(interface)来描述更复杂的数据结构:

// 类型别名
type Person = {name: string;age: number;
};let person: Person = {name: '李四',age: 25
};// 接口
interface PersonInterface {name: string;greet(): void;
}let personInterface: PersonInterface = {name: '王五',greet() {console.log(`Hello, my name is ${this.name}!`);}
};personInterface.greet(); // 输出: Hello, my name is 王五!
函数和泛型

TypeScript 支持在函数中指定参数和返回值的类型,以及使用泛型:

function add(x: number, y: number): number {return x + y;
}let result = add(10, 20); // result 类型为 number// 使用泛型
function log<T>(message: T): void {console.log(message);
}log<string>('Hello, TypeScript!'); // 明确指定 message 为 string 类型
log(123); // 推断 message 为 number 类型

示例代码

以下是使用 TypeScript 开发的一个简单鸿蒙应用示例,其中包含了基本类型、类型别名、接口和泛型:

// 定义类型别名
type GreetingMessage = {from: string;to: string;message: string;
};// 使用接口定义应用的配置
interface AppConfig {appVersion: string;debugMode: boolean;
}// 定义一个泛型函数,用于显示日志信息
function log<T>(prefix: string, content: T): void {console.log(`${prefix}: ${JSON.stringify(content)}`);
}// 应用配置
const appConfig: AppConfig = {appVersion: '1.0.0',debugMode: true
};// 问候消息
let greeting: GreetingMessage = {from: 'TypeScript',to: 'HarmonyOS Developer',message: 'Welcome to the world of TypeScript in HarmonyOS!'
};// 显示应用配置和问候消息
log('App Config', appConfig);
log('Greeting', greeting);

TypeScript 在鸿蒙应用开发中如何提供类型安全和增强的编码体验。使用 TypeScript 可以提高代码的可维护性和可读性,同时利用类型系统来避免许多常见的错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/25064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手撸一个java网关框架

手写一个简易的Java网关框架涉及到很多方面&#xff0c;但我会提供一个基本的框架概念和代码示例&#xff0c;帮助你理解网关的基本构建。以下是一个简单的Java网关框架的实现&#xff1a; 定义路由&#xff1a;需要一个路由表来映射请求的URL到对应的处理器。 请求处理&#x…

ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的RAS

安全之安全(security)博客目录导读 目录 一、RAS 错误记录中的机密信息 二、RAS 错误信号 三、内存保护引擎的 RAS ARM架构安全手册提供了使用 Arm RAS 架构在处理单元&#xff08;PE&#xff09;和系统组件中实现 RAS 的要求。本节为本规范中描述的系统组件提供了附加规则…

服务部署:Linux系统环境部署java的jar包步骤

1. 准备环境 安装 Java Runtime Environment (JRE) 首先&#xff0c;确保你的系统上已经安装了 Java Runtime Environment (JRE)。你可以使用以下命令来安装 OpenJDK&#xff1a; sudo apt update sudo apt install openjdk-11-jre 通过以下命令检查 Java 是否安装成功&…

《软件定义安全》之三:用软件定义的理念做安全

第3章 用软件定义的理念做安全 1.不进则退&#xff0c;传统安全回到“石器时代” 1.1 企业业务和IT基础设施的变化 随着企业办公环境变得便利&#xff0c;以及对降低成本的天然需求&#xff0c;企业始终追求IT集成设施的性价比、灵活性、稳定性和开放性。而云计算、移动办公…

Django 里获取url里的参数

有两种方式获取 url 里的参数 第一种&#xff1a; http://127.0.0.1:8000/example/?xx123要获取 xx 参数对应的值 123 可以这么操作 # 在 views.py def example(request):xx_value request.GET.get("xx")第二种&#xff1a; url 的例子&#xff1a;http://127.0…

jt808 jt-808 JT/T808-2001 jt/t808-2001 部标协议 协议解析 java代码实现篇

一款简单JT-808解析项目 之前写过一篇关于jt-808解析博客&#xff0c;https://blog.csdn.net/hncdyj/article/details/89494209 有很多同学很感兴趣&#xff0c;这次给大家开源一款java版本解析jt808协议的工程。 你需要的知识储备 需要了解什么是二进制&#xff0c;十进制…

pytorch 加权CE_loss实现(语义分割中的类不平衡使用)

加权CE_loss和BCE_loss稍有不同 1.标签为long类型&#xff0c;BCE标签为float类型 2.当reduction为mean时计算每个像素点的损失的平均&#xff0c;BCE除以像素数得到平均值&#xff0c;CE除以像素对应的权重之和得到平均值。 参数配置torch.nn.CrossEntropyLoss(weightNone,…

图像特征提取 python

1. 边缘检测 (Edge Detection) 1.1 Sobel 算子 Sobel 算子是一种边缘检测算子&#xff0c;通过计算图像梯度来检测边缘。 import cv2 import numpy as np# 读取图像 image cv2.imread(image.jpg, 0)# 应用 Sobel 算子 sobel_x cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize5)…

解决Windows窗口聚焦问题

情景引入&#xff1a; 在使用副屏显示器写代码&#xff0c;主屏显示器看教程的时候&#xff0c;突然有个知识点卡住了&#xff0c;这个时候你想要按下空格让视频暂停&#xff0c;但是按下后你会发现&#xff1a;视频没有暂停&#xff0c;倒是代码界面多了个空格。。。这就不好玩…

3. 变量的运算

文章目录 3.1 基本语法3.1.1 test条件测试3.1.2 中括号条件测试3.1.3 双中括号条件测试3.1.4 双圆括号 3.2 算术运算3.3 字符串运算符3.4 文件测试运算符3.5 关系运算符3.6 布尔运算符3.7 逻辑运算符 在 Shell 中包含如下的运算&#xff1a; 算术运算字符串运算符文件测试运算符…

用HTML实现拓扑面,动态4D圆环面,可手动调节,富有创新性的案例。(有源代码)

文章目录 前言一、示例二、目录结构三、index.html&#xff08;主页面&#xff09;四、main.js五、Tour4D.js六、swissgl.js七、dat.gui.min.js八、style.css 前言 如果你觉得对代码进行复制粘贴很麻烦的话&#xff0c;你可以直接将资源下载到本地。无需部署&#xff0c;直接可…

如何对stm32查看IO功能。

有些同学对于别人的开发板的资源&#xff0c;或者IO口&#xff0c;或者串口等资源不知道怎么分配。 方法1、看硬石、野火、正点原子的开发板&#xff0c;看下他们的例子&#xff0c;那个资源用什么。自己多看几个原理图&#xff0c;多看几个视频&#xff0c;做一下笔记。以后依…

【面试干货】MySQL 三种锁的级别(表级锁、行级锁和页面锁)

【面试干货】MySQL 三种锁的级别&#xff08;表级锁、行级锁和页面锁&#xff09; 1、表级锁2、行级锁3、页面锁4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在 MySQL 数据库中&#xff0c;锁是控制并发访问的重要机制&#xff0…

Stable Diffusion之最全详解图解

Stable Diffusion之最全详解图解 引言 Stable Diffusion&#xff0c;作为2022年发布的深度学习领域的重大突破&#xff0c;革新了文本到图像生成的边界。这一模型不仅能够根据文本描述精确生成视觉图像&#xff0c;还展示了在图像内补、外补、以及在提示词引导下实现图像转换的…

GQA,MLA之外的另一种KV Cache压缩方式:动态内存压缩(DMC)

0x0. 前言 在openreview上看到最近NV的一个KV Cache压缩工作&#xff1a;https://openreview.net/pdf?idtDRYrAkOB7 &#xff0c;感觉思路还是有一些意思的&#xff0c;所以这里就分享一下。 简单来说就是paper提出通过一种特殊的方式continue train一下原始的大模型&#x…

DS:树与二叉树的相关概念

欢迎来到Harper.Lee的学习世界&#xff01;博主主页传送门&#xff1a;Harper.Lee的博客主页想要一起进步的uu可以来后台找我哦&#xff01; 一、树的概念及其结构 1.1 树的概念亲缘关系 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限节点…

汇编:数组-寻址取数据

比例因子寻址&#xff1a; 比例因子寻址&#xff08;也称为比例缩放索引寻址或基址加变址加比例因子寻址&#xff09;是一种复杂的内存寻址方式&#xff0c;常用于数组和指针操作。它允许通过一个基址寄存器、一个变址寄存器和一个比例因子来计算内存地址。 语法 比例因子寻…

LeetCode //C - 168. Excel Sheet Column Title

168. Excel Sheet Column Title Given an integer columnNumber, return its corresponding column title as it appears in an Excel sheet. For example: A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … Example 1: Input: columnNumber 1 Outp…

经典文献阅读之--Online Monocular Lane Mapping(使用Catmull-Rom样条曲线完成在线单目车道建图)

0. 简介 对于单目摄像头完成SLAM建图这类操作&#xff0c;对于自动驾驶行业非常重要&#xff0c;《Online Monocular Lane Mapping Using Catmull-Rom Spline》介绍了一种仅依靠单个摄像头和里程计生成基于样条的在线单目车道建图方法。我们提出的技术将车道关联过程建模为一个…

Java 习题集

&#x1f496; 单选题 &#x1f496; 填空题 &#x1f496; 判断题 &#x1f496; 程序阅读题 1. 读代码写结果 class A {int m 5;void zengA(int x){m m x;}int jianA(int y){return m - y;} }class B extends A {int m 3;int jianA(int z){return super.jianA(z) m;} …