【HormonyOS4+NEXT】TypeScript基础语法详解

在这里插入图片描述

🙋‍ 一日之际在于晨
⭐本期内容:TypeScript基础语法详解
🏆系列专栏:鸿蒙HarmonyOS4+NEXT:探索未来智能生态新纪元


文章目录

  • 前言
  • 变量与类型
  • 函数
  • 类与接口
    • 类(Class)
    • 接口(Interface)
    • 函数与接口的使用
    • 对象的创建与函数的使用
  • 泛型
  • 总结


前言

TypeScript是一种由微软开发的开源编程语言,它是JavaScript的一个超集,添加了静态类型、类、接口和泛型等特性。这些特性使得TypeScript在大型项目中具有更好的可维护性和可扩展性。本文将对TypeScript的基础语法进行详细讲解,帮助读者快速入门。


变量与类型

TypeScript的核心特性之一就是静态类型系统。这意味着在声明变量时,我们可以为其指定一个类型,这样TypeScript编译器就可以在编译时检查类型错误。

例如:let msg:string=‘hello world’
其中:let为声明变量的关键字,const则代表常量, msg为变量名,是自定义的 string是变量的数据类型

常见的类型有:

  • string:字符串,可以用单引号或者双引号
let greeting: string = "Hello, World!";  
let quote: string = 'To be or not to be, that is the question.';
  • number:数值、整数、浮点数都可以
let age: number = 30;  
let price: number = 19.99;
  • any:不确定类型,可以是任意类型
let notSure: any = 4;  
notSure = "maybe a string instead";  
notSure = false;

- union:联合类型,可以是多个指定类型中的一种

let greet: string | number;  
greet = "Hello"; // OK  
greet = 42; // OK  
// greet = true; // Error, boolean is not string or number

  • Object:对象(注意:在TypeScript中,使用 {} 来表示一个空对象类型,而 Object 实际上指向的是非原始类型)
let person: object = {  
  name: "Alice",  
  age: 25  
};
  • Array:数组、元素可以是任意其他类型
let numbers: number[] = [1, 2, 3, 4, 5];  
let strings: string[] = ["red", "green", "blue"];  
let mixed: (number | string)[] = [1, "two", 3, "four"];

注意,对于 object 类型,实际上在TypeScript中,使用 {} 来定义一个空对象类型可能更加精确,因为它不会接受原始值(如 string、number 等)。而 Object 类型在TypeScript中是一个特殊的类型,它是所有类型的超类型,包括原始类型。因此,使用 Object 类型作为变量类型时,可以为其分配任何类型的值。

在定义数组时,我们通常使用类型后跟方括号的语法,例如 number[] 表示数字数组。如果需要数组中的元素可以是多种类型,可以使用联合类型,例如 (number | string)[] 表示数组中的元素可以是数字或字符串。

函数

在TypeScript中,我们可以为函数参数和返回值指定类型。这有助于我们在编写函数时明确函数的输入和输出,从而提高代码的可读性和可维护性。
如下,我们定义了一个名为greeter的函数,它接受一个string类型的参数person,并返回一个string类型的结果。然后,我们调用这个函数并传入一个字符串变量user作为参数。
注意:在TypeScript中,空字符串、数字0、null、undefined都被认为是false,其它值则为true。

function greeter(person: string): string {  
    return "Hello, " + person;  
}  
  
let user = "Jane";  
console.log(greeter(user));

类与接口

在 TypeScript 中,类和接口是面向对象编程的两个核心概念。类(Class)是一种用户自定义的数据类型,它包含属性和方法,可以用来创建对象。接口(Interface)定义了一个对象的结构,它规定了一个对象应该有哪些属性和方法,但不提供具体的实现。

类(Class)

在这个 Animal 类中:
name 是一个属性,用来存储动物的名字。
constructor 是类的构造函数,用于创建类的实例,并初始化 name 属性。
move 是一个方法,用于描述动物移动的行为。注意,move 方法有一个默认参数 distanceInMeters,其默认值为 0。

class Animal {    
    name: string;  // 类的属性  
    
    constructor(theName: string) {  // 类的构造函数  
        this.name = theName;  // 在构造函数中初始化属性  
    }    
    
    move(distanceInMeters: number = 0) {  // 类的方法  
        console.log(`${this.name} moved ${distanceInMeters}m.`);    
    }    
}

接口(Interface)

Person 接口定义了一个对象应该具有 firstName 和 lastName 两个属性,并且这两个属性都是字符串类型。

interface Person {    
    firstName: string;  // 接口的属性  
    lastName: string;  // 接口的属性  
}

函数与接口的使用

greeter 函数接受一个参数 person,该参数的类型是 Person 接口。这意味着任何传递给 greeter 函数的对象都必须具有 firstName 和 lastName 属性。

function greeter(person: Person) {  // 函数接受一个符合Person接口的对象  
    return "Hello, " + person.firstName + " " + person.lastName;  // 使用接口的属性  
}

对象的创建与函数的使用

这里创建了一个对象 user,它符合 Person 接口的规范(即具有 firstName 和 lastName 属性)。然后,我们将 user 对象传递给 greeter 函数,并打印返回的问候字符串。

let user = { firstName: "Jane", lastName: "User" };  // 创建一个符合Person接口的对象  
console.log(greeter(user));  // 调用greeter函数并打印结果

泛型

在 TypeScript 中,泛型(Generics)是一种创建可重用组件的方式,这些组件可以处理多种数据类型,而不是单一的数据类型。泛型允许我们定义函数、接口或类,其中的类型参数可以在使用这些组件时指定。这使得代码更加灵活和可维护,因为我们可以编写一次代码,然后在多种数据类型上重复使用。

如下例子:identity 函数是一个泛型函数,它接受一个类型为 T 的参数,并返回相同类型的值。这里的 T 是一个类型参数,它代表了在函数被调用时可以指定的任意类型。
让我们详细分析一下这个代码:

function identity<T>(arg: T): T {    
    return arg;    
}

在上面的代码中:

< T>:定义了类型参数 T。这告诉 TypeScript,我们打算在函数中使用一个或多个类型作为参数。
arg: T:函数参数 arg 的类型被指定为 T,意味着它可以是任何类型。
return arg;:函数返回与参数相同的值,其类型也是 T。
接着,创建了一个 myIdentity 变量,并将 identity 函数赋值给它。这里使用了另一种语法来指定泛型类型参数。

let myIdentity: <T>(arg: T) => T = identity;

这里,myIdentity 的类型被定义为接受一个类型为 T 的参数并返回相同类型的函数。它实际上是对 identity 函数的一个引用,因此我们可以通过 myIdentity 来调用 identity 函数。
最后使用 myIdentity 函数来处理不同类型的值:

console.log(myIdentity<string>("hello")); // 输出 "hello"  
console.log(myIdentity<number>(42)); // 输出 42

myIdentity< string>(“hello”):在这里,显式地指定了 T 为 string 类型,并传递了一个字符串 “hello” 作为参数。函数返回这个字符串,并输出到控制台。
myIdentity< number>(42):类似地,指定了 T 为 number 类型,并传递了一个数字 42。函数返回这个数字,并输出到控制台。


总结

今日之学习篇章已然落笔,愿诸君有所收获。🤩
倘若您对此深感兴趣,不妨关注此专栏,新知将持续涌现,与您共舞思维的华章。😎
期待下次再会,愿我们于知识的海洋中,再度相聚,共赏智慧之花绽放。👍
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SD-WAN企业组网:多样化的应用场景

随着企业网络环境的快速发展&#xff0c;SD-WAN技术正成为实现站点间网络互通的关键所在。它不仅支持企业站点对因特网、SaaS云应用和公有云等多种业务的高效访问&#xff0c;更能满足多样化的业务需求。深入探讨SD-WAN的组网应用场景&#xff0c;我们能够发现其广泛的适用性和…

免费打造个人专属的高颜值本地大模型AI助手,无限量使用 Ollama+LobeChat开源工具,在本地运行AI大模型,安全的和AI对话。

文章目录 1、安装ollama2、下载模型3、安装lobechat4、卸载Ollama 1、安装ollama 第一步&#xff0c;首先安装ollama&#xff0c;选择对应系统的安装包 ollama官网地址&#xff1a;https://ollama.com/ 本问是lunix系统上安装ollama&#xff1a; curl -fsSL https://ollama.…

Python对txt文本文件内容进行替换,以便通过Origin进行数据分析

因为要使用Origin进行数据分析&#xff0c;数据集为单行文本逗号隔开&#xff0c;无法直接复制粘贴到Origin中&#xff0c;故为此整理了一下代码&#xff0c;方便后续直接使用。 一、任务需求 有个1.txt文档文件里面是一行数据信息&#xff0c;要将其规整为每行一个数据&…

排序:冒泡排序,直接插入排序,简单选择排序,希尔排序,快速排序,堆排序,二路归并排序

目录 一.冒泡排序 代码如下 冒泡排序时间复杂度分析 二.直接插入排序 直接插入排序时间复杂度分析 直接插入排序优化&#xff1a;折半插入排序 三.简单选择排序 简单选择排序优化&#xff1a;双向选择排序 选择排序时间复杂度 双向选择排序时间复杂度 四.希尔排序 希…

Java反序列化基础-类的动态加载

类加载器&双亲委派 什么是类加载器 类加载器是一个负责加载器类的对象&#xff0c;用于实现类加载的过程中的加载这一步。每个Java类都有一个引用指向加载它的ClassLoader。而数组类是由JVM直接生成的&#xff08;数组类没有对应的二进制字节流&#xff09; 类加载器有哪…

贝锐蒲公英企业路由器X5 Pro:无需专线和IT人员,分钟级异地组网

尽管我们公司规模较小&#xff0c;只有十几个人&#xff0c;但为了确保项目资料的安全&#xff0c;依旧在公司内部自建了文件存储服务器和办公系统。 但是&#xff0c;随着项目数量的增加&#xff0c;大家出差办公的情况也愈发普遍&#xff0c;如何解决远程访问内部系统成了问…

公司聚会计划:最优宾客名单的算法设计与分析

公司聚会计划&#xff1a;最优宾客名单的算法设计与分析 问题描述算法设计C代码实现时间复杂度分析空间复杂度分析结论 在组织公司聚会时&#xff0c;一个重要的考虑因素是如何确保聚会的愉快氛围。在本问题中&#xff0c;公司主席希望在聚会上避免员工及其直接主管同时出席&am…

Python写FTP文件自动传输脚本

FTP&#xff08;File Transfer Protocol&#xff09;是一种用于文件传输的标准协议&#xff0c;当我们需要上传或下载文件时&#xff0c;经常会使用 FTP。如果每天需要上传或下载大量文件&#xff0c;手工操作无疑是一件费时费力的事情。在本篇文章中&#xff0c;我们将向您介绍…

中国建筑模板出口供应商

随着"一带一路"倡议的深入推进,中国基建企业"走出去"的步伐正在加快。与之相应,建筑模板产品作为工程建设的重要材料,其国际化供应也愈发受到重视。在众多建筑模板生产企业中,贵港市能强优品木业有限公司以其卓越的产品质量和丰富的出口经验,成为了国内知名…

sed 字符替换时目标内容包含 特殊字符怎么处理

背景 想写一个自动修改配置的脚本&#xff0c;输入一个 mysql jdbc 的连接路径&#xff0c;然后替换目标配置中的模版内容&#xff0c;明明很简单的一个内容&#xff0c;结果卡在了 & 这个符号上。 & 到底是什么特殊字符呢&#xff1f;结论&#xff1a;它代表要替换的…

GmSSL-3.1.1编译

1.源码下载&#xff1a; 下载地址&#xff1a;https://github.com/guanzhi/GmSSL/releases选择对应版本下载。 ​ 2.选择要下载的源码包&#xff1a; ​ 2.编译&#xff1a; 2.1 windows编译&#xff1a;打开vs命令行&#xff0c;选择想要编译的版本&#xff0c;x86或x64…

大数据、数据架构、推荐冷启动...小红书的 AI 数据新方案都在这个会

伴随着行业数据持续积累&#xff0c;人工智能正加速渗透各类场景&#xff0c;大数据、数据架构和推荐系统等领域&#xff0c;依然是各行各业目之所聚。4 月 19 至 20 日&#xff0c;「DataFunCon 2024 上海站」来袭&#xff01;大会以“数聚垂域&#xff0c;智领未来”为主题…

数据结构——栈(C++实现)

数据结构——栈 什么是栈栈的实现顺序栈的实现链栈的实现 今天我们来看一个新的数据结构——栈。 什么是栈 栈是一种基础且重要的数据结构&#xff0c;它在计算机科学和编程中扮演着核心角色。栈的名称源于现实生活中的概念&#xff0c;如一叠书或一摞盘子&#xff0c;新添加…

AI概念普及-LangChain

文章目录 概念产品架构核心特性核心组件使用场景其他资源开发支持结论Langchain详细介绍LangChain的具体实现原理LangChain如何与其他大型语言模型&#xff08;LLM&#xff09;集成&#xff0c;有哪些具体的接口或协议&#xff1f;LangChain的性能表现和优化策略有哪些&#xf…

由于找不到msvcr120.dll,无法继续执行代码的详细处理方法,教你快修复msvcr120.dll

DLL文件&#xff0c;全称动态链接库文件&#xff0c;在计算机系统中具有重要作用。其中&#xff0c;msvcr120.dll是一个常见的DLL文件&#xff0c;它关联了许多程序和应用的正常运行。本指南将深入解释 msvcr120.dll文件的功能&#xff0c;并阐述如果缺少该文件会引起什么样的问…

Banana Pi开源社区推出BPI-5202开发板,国产龙芯Loongson 2K1000LA

BPI-5202开发板&#xff0c;国产龙芯Loongson 2K1000LA BPI-5202作为单纯的嵌入式通用控制器软硬件开发平台&#xff0c;采用龙芯2K1000LA芯片设计&#xff0c;基本配置中有2个独立MAC以太网端口、2个RS485端口1个RS232端口2个CAN2.0端口&#xff0c;配置灵活&#xff0c;广泛适…

# ABAP SQL 字符串处理-CONCATCAST

经常我都要在ABAP的sql语句中对字符串进行处理&#xff0c;现在就总结一下可以用到的方法 文章目录 字符串处理拼接字段运行结果 填充字符串运行结果 截取字符串 SUBSTRING运行结果 CAST转换类型程序运行结果 CAST 转换成 DATS类型&#xff08;日期&#xff09; 字符串处理 在…

客户案例:金蝶云星空对接纷享销客

正文&#xff1a;某国内食品贸易类客户&#xff0c;目前内部使用了多套系统。金蝶云星空ERP&#xff0c;纷享销客&#xff0c;钉钉&#xff0c;旺店通等系统。金蝶云星空作企业的业务财务一体化管理&#xff0c;与专业CRM平台纷享销客的战略合作&#xff0c;在产品管理、客户关…

Java智慧工地可视化管理云平台源码 施工进度、施工质量

目录 1、基础数据管理 2、考勤管理 3、安全隐患管理 4、视频监控 5、塔吊监控 6、升降机监控 7、管理分析报表 8、移动端数据推送 9、数据接收管理 慧工地全套源码&#xff08;PC端&#xff0c;移动端&#xff0c;大屏端&#xff09; 智慧工地系统利用APP监管施工现场…

SQL注入利用学习 - 延时盲注

延时盲注原理 无法利用页面显示结果判断SQL注入是否执行成功&#xff0c;此时可以利用 SQL语句执行的延时 判断SQL是 否执行成功。 只要可以执行延时&#xff0c;那么就可以利用该注入技术。 sql时间类型的盲注本质是利用插入的SQL语句执行造成时间延迟&#xff0c;插入的SQ…