首页 > 其他分享 >鸿蒙极速入门(三)-TypeScript语言简介

鸿蒙极速入门(三)-TypeScript语言简介

时间:2023-10-25 18:13:53浏览次数:35  
标签:TypeScript string 鸿蒙 number let log var 极速 undefined

ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。因此,在学习ArkTS语言之前,需要先了解一下TS语言的基础知识。

一、基础类型

1. 数字类型-number

双精度 64 位浮点值。它可以用来表示整数和分数

let decLiteral: number = 6;
2. 字符串类型-string

一个字符系列,使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本和内嵌表达式。

let name: string = "Runoob";
let words: string = `您好,今年是 ${ name } 发布 ${ years + 1} 周年`;
3. 布尔类型-boolean

表示逻辑值:true 和 false。

let flag: boolean = true;
4. 枚举-enum

枚举类型用于定义数值集合。

enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
5. 数组
let arr: number[] = [1, 2]; // 在元素类型后面加上[]
let arr: Array<number> = [1, 2]; // 使用数组泛型

6. 元组

元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。

let x: [string, number];
x = ['Runoob', 1];

7. 特殊类型-any、null、undefined

Any

任意值是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型,变量的值会动态改变时使用

let x: any = 1;    // 数字类型
x = 'I am who I am';    // 字符串类型
x = false;    // 布尔类型
null

null是一个只有一个值的特殊类型。表示一个空对象引用。用 typeof 检测 null 返回是 object。

var person = null;           // 值为 null(空), 但类型为object
undefined

undefined 是一个没有设置值的变量。typeof 一个没有值的变量会返回 undefined。

var person;                  // 值为 undefined, 类型是undefined
var person = undefined;     // 值为 undefined, 类型为 undefined
undefined 和 null 的区别

null 和 undefined 的值相等,但类型不等:

typeof undefined             // undefined
typeof null                  // object
null === undefined           // false (类型不等)
null == undefined            // true (值相等)

二、变量

var [变量名] : [类型] = 值;

var uname = "Runoob";
let password = "123456";

注意:Swift 中,var 为变量,let 为常量;而 JavaScript 中,var 为函数作用域变量,let 为块作用域变量,const 为常量。

三、常量

const PI = 3.141592653589793;

四、流程控制语句

// if
var num:number = 2 
if(num > 0) { 
    console.log(num+" 是正数") 
} else if(num < 0) { 
    console.log(num+" 是负数") 
} else { 
    console.log(num+" 不是正数也不是负数") 
}

// switch
var grade:string = "A"; 
switch(grade) { 
    case "A": { 
        console.log("优"); 
        break; 
    } 
    case "B": { 
        console.log("良"); 
        break; 
    } 
    case "C": {
        console.log("及格"); 
        break;    
    } 
    case "D": { 
        console.log("不及格"); 
        break; 
    }  
    default: { 
        console.log("非法输入"); 
        break;              
    } 
}

// for
var num:number = 5; 
var i:number; 
var factorial = 1; 
for(i = num;i>=1;i--) {
   factorial *= i;
}

// for in
var j:any; 
var n:any = "a b c";
for(j in n) {
    console.log(n[j]);
}

// for of
let someArray = [1, "string", false];
for (let entry of someArray) {
    console.log(entry); // 1, "string", false
}

// forEach
let list = [4, 5, 6];
list.forEach((val, idx, array) => {
    // val: 当前值
    // idx:当前index
    // array: Array
});

// every
let list = [4, 5, 6];
list.every((val, idx, array) => {
    // val: 当前值
    // idx:当前index
    // array: Array
    return true; // Continues
    // Return false will quit the iteration
});

// while
var num:number = 5; 
var factorial:number = 1; 
while(num >=1) { 
    factorial = factorial * num; 
    num--; 
} 

// do while
var n:number = 10;
do { 
    console.log(n); 
    n--; 
} while(n>=0);

在循环语句中支持breakcontinue关键字,跳出或继续循环

五、函数

语法格式:

// 默认
function function_name(){}
// 带返回值,:后的T为返回值类型
function function_name(): T{}
// 带参函数,支持默认值
function function_name(param1[:type],param2[:type] = default_value) {}
// 带剩余参数,函数的最后一个命名参数 restOfName 以 ... 为前缀,它将成为一个由剩余参数组成的数组
function buildName(firstName: string, ...restOfName: string[]) {
    return firstName + " " + restOfName.join(" ");
}
// 匿名函数
var res = function( [arguments] ) { ... }
// 构造函数
var res = new Function ([arg1[, arg2[, ...argN]],] functionBody)
// Lambda 函数
( [param1, param2,…param n] )=>statement;

六、类( Class )

语法格式:

class class_name { 
    // 类作用域
}

普通

示例:

class Car { 
    // 字段 
    engine:string; 
 
    // 构造函数 
    constructor(engine:string) { 
        this.engine = engine 
    }  
 
    // 方法 
    disp():void { 
        console.log("发动机为 :   "+this.engine) 
    } 
}

var obj = new Car("Engine 1")
obj.field_name // 访问属性
obj.function_name() // 访问方法

继承

使用extends作为关键字:

class Shape { 
   Area:number 
   
   constructor(a:number) { 
      this.Area = a 
   } 
   
   test() {}
} 
 
class Circle extends Shape { 
   disp():void { 
      console.log("圆的面积:  "+this.Area) 
   } 
   
   test() {
    super.test() // 重写父类方法
   }
}
  
var obj = new Circle(223); 
obj.disp();
obj.test;

七、接口

语法定义:

interface interface_name { 
}

普通

interface IPerson { 
    firstName:string, 
    lastName:string, 
    sayHi: ()=>string 
} 
 
var customer:IPerson = { 
    firstName:"Tom",
    lastName:"Hanks", 
    sayHi: ():string =>{return "Hi there"} 
} 

接口继承

接口可以通过关键字extends来继承其他接口以扩展自己。

单继承
interface Person { 
   age:number 
} 
 
interface Musician extends Person { 
   instrument:string 
} 

var drummer = <Musician>{}; 
drummer.age = 27 
drummer.instrument = "Drums" 
多继承
interface IParent1 { 
    v1:number 
} 
 
interface IParent2 { 
    v2:number 
} 
 
interface Child extends IParent1, IParent2 { } 
var Iobj:Child = { v1:12, v2:23} 

八、导入( Import )

通过关键字import导入其他文件

import someInterfaceRef = require("./SomeInterface");

标签:TypeScript,string,鸿蒙,number,let,log,var,极速,undefined
From: https://www.cnblogs.com/anywherego/p/17787809.html

相关文章

  • TypeScript入门到精通——TypeScript类型系统基础——函数类型
    函数类型一、常规参数类型 在函数形式参数列表中,为参数添加类型注解就能够定义参数的类型。例如,在下列中将add函数声明中的参数x和参数y的类型都定义为number类型。functionadd(x:number,y:number){returnx+y;} 针对函数表达式和匿名函数,我们也可......
  • HarmonyOS鸿蒙原生应用开发设计- 华为分享图标
    HarmonyOS设计文档中,为大家提供了独特的华为分享图标,开发者可以根据需要直接引用。开发者直接使用官方提供的华为分享图标内容,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的内容产生的侵权意外情况等,减少自主创作华为分享图标的工作量。当然,如果有个性化的自......
  • 鸿蒙极速入门(二)-开发准备和HelloWorld
    一、开发准备本篇博客基于的系统版本:华为官方HarmonyOS版本3.1、OpenHarmony版本4.0Beta开发语言ArkTS语言(推荐)JS语言(支持)Java语言(已放弃支持)从Harmony4.0开始,官方主推ArkTS语言,且不再支持Java语言UI框架-方舟开发框架(ArkUI框架)ArkUI框架介绍个人理解:类似iOS的......
  • 鸿蒙极速入门(一)-HarmonyOS简介
    1、华为官网介绍2、OpenHarmony开源项目3、技术架构内核层内核子系统:采用多内核(Linux内核或者LiteOS)设计,支持针对不同资源受限设备选用适合的OS内核驱动子系统:驱动框架(HDF)是系统硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。系统服务层系统服务层是Ope......
  • 【保姆级教学】抛弃QuickConnect,免费极速远程访问黑群辉、白群晖NAS
    相信很多使用群晖NAS的小伙伴都不满意群晖自带的QuickConnect远程访问,不是速度慢就是连不上,而且很多套件不支持QuickConnect,这里我将教大家如何使用免费的内网穿透工具来实现异地远程访问群晖NAS,而且支持所有的套件的远程访问,小白也能看懂。步骤1:注册并安装内网穿透工具Solopace.......
  • TypeScript入门到精通——TypeScript类型系统基础——对象类型
    对象类型 在JavaScript中存在这样一种说法,那就是"一切皆为对象"。有这种说法是因为JavaScript中绝大多数值都可以使用对象来表示。例如:函数、数组和对象字面量本质上都是对象。对于原始数据类型、如String类型,JavaScript也提供了相应的构造函数来创建能够表示原始值的......
  • Transformer一作来卷多模态!学术图表也能看懂,100毫秒极速响应|免费试玩
    前言 最近多模态大模型是真热闹啊。这不,Transformer一作携团队也带来了新作,一个规模为80亿参数的多模态大模型Fuyu-8B。而且发布即开源,模型权重在HuggingFace上可以看到。本文转载自量子位仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结......
  • 关于原始typescript实现todolist(装饰器模式)
    前言我是歌谣最好的种树是十年前其次是现在今天继续给大家带来的是原始typescript的讲解环境配置npminit-yyarnaddvite-D修改page.json配置端口{"name":"react_ts","version":"1.0.0","description":"","main":"index.......
  • 智慧矿山AI算法极速解决皮带问题!
    近年来,随着智能技术的迅速发展与应用,智慧矿山逐渐成为提高生产能力和安全性的重要手段。其中,皮带运输系统作为矿山生产过程中的关键环节,其运行状态的准确判定和及时预警对矿山的安全和效率至关重要。为了实现对皮带运行状态的准确识别,智慧矿山AI算法应运而生。为什么需要皮带运行状......
  • Vue3 typescript script setup获取范型组件的ref
    原博客地址:https://juejin.cn/post/7247433208437850169?from=search-suggest在typescript下,如果想获取带类型的组件模板引用,官方文档中说明了方式:https://cn.vuejs.org/guide/typescript/composition-api.html#typing-component-template-refsconstmodal=ref<InstanceTy......