• HarmonyOS 快速入门TypeScript


    1.什么是TypeScript,它和JavaScript,ArkTs有什么区别

    ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。要了解什么是ArkTS,我们首先要了解下ArkTS、TypeScript和JavaScript之间的关系:

    • JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。
    • TypeScript 是 JavaScript 的一个超集,它扩展了 JavaScript 的语法,通过在JavaScript的基础上添加静态类型定义构建而成,是一个开源的编程语言。
    • ArkTS兼容TypeScript语言,拓展了声明式UI、状态管理、并发任务等能力。

    由此可知,TypeScript是JavaScript的超集,ArkTS则是TypeScript的超集,他们的关系如下图所示:

    简单来说,ArkTs扩展了TS,而TS在JS的基础也得到了扩展,经过了解,下面我们学习一下Type Script的基础语法

    2.Type Script基础语法

    基本类型

    1.布尔类型boolean

    let isDone:boolean = true

    2.数字number

    let n:number = 1

    3.字符串string

    let s:string = "string"

    4.数组number[]或Array

    1. let arr :number[] = [1,2,3]
    2. let list: Array<number> = [1,2,3,4,5]

    5.元祖[number,string]

    let tuple:[string,number] = ['name',12]

    6.枚举 enum 

    1. enum Color{
    2. Red,Green,Blue
    3. }
    4. let e:Color = Color.Red

    7.unkown

    1. let no:unknown = 4
    2. no = false
    3. no = "unkown"

    8.void

    1. function test():void{
    2. }

    9.undefine和null

    1. let u:undefined = undefined
    2. let emtry = null

    10.联合类型,比如 let x = string|number ,x可以赋值为'str'和1

    1. let b :string|number = 1
    2. b = 'str'
    3. b = 4

    条件语句

    1.if语句

    1. let x = 1
    2. if(x==1){
    3. console.log("666")
    4. }

    2.if...else....语句

    1. if(x==1){
    2. console.log('是1')
    3. }else{
    4. console.log("不是1")
    5. }

    3.if...else if...if...语句

    1. if(x==1){
    2. console.log('是1')
    3. }else if(x==2){
    4. console.log("是2")
    5. }else{
    6. console.log("不是1也不是2")
    7. }

    4.switch...case....语句(default,break)

    1. switch (x){
    2. case 1:
    3. console.log("是1")
    4. break;
    5. case 2:
    6. console.log("是2")
    7. break;
    8. default :
    9. console.log("不是1也不是2")
    10. break;
    11. }

    函数

    函数声明包含函数名,参数,返回类型

    1.有名函数

    1. function add(x:number,y:number):number{
    2. return x+y;
    3. }

    2.匿名函数

    1. let n = function(x:number,y:number){
    2. return x+y;
    3. };

    3.函数的可选参数

    我们在参数值后跟?,表示该参数是可选的,即传与不传都不影响函数的执行

    1. function getInfo(firstName:string,lastName?:string){
    2. Console.log(getInfo)
    3. }

    4.函数的剩余参数

    我们在参数值前跟...,表示该参数是一个剩余参数,即可以不传,也可以传多个

    1. function printName(firstName:string,...lastName:string[]){
    2. }

    5.箭头函数

    在ES6版本,Type Script 提供了箭头函数,即function可以被省略,以箭头的形式表示一个函数,还可以将整个代码块赋值给变量

    1. let x =(firstName:string,lastName:string)=>{
    2. //代码块
    3. }

    类是一种面向对象思想的编程用法,包含变量的声明,构造函数,以及普通函数的使用

    1.类的基础用法

    1. class Person{
    2. private name:string
    3. private age:number
    4. constructor(name:string,age:number) {
    5. this.name = name
    6. this.age = age
    7. }
    8. public getInfo():string{
    9. //return "name:"+this.name+",age:"+this.age;
    10. return `name is ${this.name},age is ${this.age}`//反引号
    11. }
    12. }
    13. let p = new Person("sun",14)
    14. console.log(p.getInfo())

    2.继承

    1. class Employee extends Person{
    2. }

    模块 

    一个文件的B类想要访问另外一个文件的A类,在TS里需要使用export导出A类,在B类里通过import 导入进来

    任何声明(比如变量,函数,类,类型别名或接口)都能够通过添加export关键字来导出

    模块A

    1. export class Person{
    2. ...
    3. }

     模块B

    1. import {Person} from '../../../../../entry/src/main/ets/entryability/Person'
    2. class test{
    3. x = new Person("name",12)
    4. constructor() {
    5. }
    6. }
    7. let test1 = new test();
    8. console.log(test1.x.getInfo());

    模块 | TypeScript Handbook

    迭代器

    当一个对象实现Symbol.iterator属性时,我们认为它是可迭代的,一些内置的类型比如Array,Map,Set,String,Int32Array,UInt32Array都具有迭代性。

    1.for...of...对值遍历

    1. let arr =[1,2,3]
    2. for(let x of arr){
    3. console.log(x.toString()) //1,2,3
    4. }

    2.for...in...对下标遍历

    1. let arr =[1,2,3]
    2. for (let arrKey in arr) {
    3. console.log(arrKey); //0,1,2
    4. }

    3.在线学习与运行

    TypeScript 中文网

    TypeScript 在线工具 | 菜鸟工具

    TypeScript: TS Playground - An online editor for exploring TypeScript and JavaScript

  • 相关阅读:
    信息技术服务标准是什么
    【MySQL】A01、性能优化-参数监控&分析
    细聊C# AsyncLocal如何在异步间进行数据流转
    麒麟系统开发笔记(三):从Qt源码编译安装之编译安装Qt5.12
    IDEA--tomcat日志乱码
    Deepin下vsftp服务安装配置
    bit band
    MySQL-锁
    《微信小程序-进阶篇》Lin-ui组件库源码分析-Button组件(二)
    Failed to connect to gitee.com port 443: Time out 连接超时提示【Bug已完美解决-鸿蒙开发】
  • 原文地址:https://blog.csdn.net/qq_34123324/article/details/134050055