TypeScript基础语法----Harmony OS 开发(第二期)

本文介绍了TypeScript的基础概念,包括变量声明(let、const、数据类型如string、number、boolean等)、条件控制(if-else、switch)、循环迭代(for、while、for...in、for...of)、函数(普通函数、箭头函数、可选参数等)、类和接口以及模块开发。
摘要由CSDN通过智能技术生成

TypeScript 语言基础

变量声明

let value:string ="hello,world!"

//let :关键字,代表变量,与它相对的关键字是const 代表常量
//value :变量名,用户自定义
// string :变量的数据类型
//  "hello,world!" :变量value 的初始化值
常用数据类型
let value:string ="hello,world!"
// string 字符串,可以用单引号或双引号

let value:number =20
//number 数值, 整数,浮点数都行
//十进制(22),十六进制(0x22),八进制(012),二进制(0b11)都行

let value:boolean =ture
//boolean 布尔类型


let x: [string, number]=['hello', 10];
//元组类型允许表示一个已知元素数量和类型的数组,
//各元素的类型不必相同。 

let value:any ="jack"
value =18
// any 不确定什么类型,可以是任何类型


enum Color {Red, Green, Blue};      //枚举
let c: Color = Color.Green;      //枚举变量 c
//enum类型是对JavaScript标准数据类型的一个补充,
//使用枚举类型可以为一组数值赋予友好的名字。


let notSure: unknown = 4;
notSure = 'maybe a string instead';
notSure = false;
//不希望类型检查器对这些值进行检查而是直接让它们通过
//编译阶段的检查。那么我们可以使用unknown类型来标记这些变量


let u: undefined = undefined;
let n: null = null;
//TypeScript里,undefined和null两者各自有自己的类型
//分别叫做undefined和null。


let value:number|string|boolean ='jack'
value=30
// union 联合类型,可以是多个指定类型中的一种

let p={name:'jack',age:25}
// 定义对象,不用写具体类型

p.name   //调用对象中的成员----方法一
p['age']  //调用对象中的成员----方法二

console.log("age: "+p.age)   //向控制台输出内容"age: 25"


let values:number[] =[12,34]
let ages:Array<string> =["jack",'rose']
//定义数组的两种方法,元素可以是其他任意类型
console.log(ages[1])
//访问数组ages

条件控制

if-else
let value:number =15
if(value>0)
{
   console.log(value+"是正数")
}
else if(value===0)     //"==="该运算符是比较运算符,
                       //也可以用"==",后者在比较时需要判断 
                       //双方数据类型是否一致,而前者则不需要。
{
   console.log(value+"是负数")
}
else
{
   console.log(value+"是0")
}

在TypeScript中,空字符串,数字0,null,undefined都被认为是false,其他值则为true。

switch

与C语言switch用法类似。

let grade: string='A'
switch(grade)
{
  case 'A' :
  {
      console.log("优秀")
      break;
  }
  case 'B' :
  {
      console.log("良好")
      break;
  }
  case 'C' :
  {
      console.log("合格")
      break;
  }
  default :
  {
      console.log("非法输入")
      break;
  }
}

循环迭代

for与while

与C++语法类似。

//普通for
for(let i=0;i<10;i++)
{
     console.log("第"+i+"次")
}

//普通while
let i=0;
while(i<10)
{
   console.log("第"+i+"次")
   i++
}

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

let values:string[] =["jake","rose"]
for(const i in values)  //for in 迭代器,获得数组各个元素的下标
{
   console.log(i+":"+values[i])
}

for(const value of values)  //for of 迭代器,
                           //直接获得数组各个元素
{
   console.log(value)
}

函数

普通函数

形式:
function 函数名(参数1名:参数1类型,参数2名:参数2类型):函数返回值类型

//函数定义
function  say666(name:string):number
{
 console.log(name+" say 666")
 return 6
}

//匿名函数
let myAdd = function (x: number, y: number): number
{
        return x + y;
};

//函数调用
let result=say666("jack")   //已经默认result是number类型的了
箭头函数(普通函数的简写)
let result=(name:string) =>{
console.log(name+" say 666")
}
result("jack")     //箭头函数的调用
可选参数,默认参数,剩余参数
//可选参数,在参数名后面添加?,表示该参数是可选的
function  say666(name?:string):void
{
//判断name 是否有值,若无值,则给个默认值
 name=name? name : "陌生人"  //三目运算符
 console.log(name+" say 666")
}

//函数的调用,两者都可以
say666("rose")
say666()
//剩余参数会被当做个数不限的可选参数,可以一个都没有,
//同样也可以有任意个。 可以使用省略号( ...)进行定义:

function getEmployeeName(firstName: string, 
...restOfName: string[])      //...restOfName 叫剩余参数
{
  return firstName + ' ' + restOfName.join(' ');
}

let employeeName = getEmployeeName('Joseph', 'Samuel', 
'Lucas', 'MacKinzie');
function  say666(name:string="陌生人"):void    //默认参数
{
 console.log(name+" say 666")
}

//函数的调用,两者都可以
say666("rose")
say666()

类和接口

TypeScript中,类和接口中声明和定义的方法都不用添加关键字function

接口(抽象父类)与类

接口(interface): 用于声明函数

类(class): 用于实现接口—即实现函数定义

接口与类的关系可以看作父类(抽象父类)与子类的关系,接口类似C++中的纯虚函数

//定义枚举
enum Msg{
 Hi="Hi"
 HELLO ="hello"
}

//定义一个接口,里面是抽象方法声明(函数声明)
interface A{
    say(msg::Msg):void    //参数是一个枚举类型的
}

//实现接口
class B implements A{
    say(msg::Msg):void{
        console.log(msg+",I am B")
    }
}

//初始化对象
let a:A= new B()    //这里是父类(A)变量接收了子类(B)的对象
                    //也可以是子类(B)变量接收子类(B)对象
                    //类多态的体现
                    
a.say(Msg.Hi)     //调用方法,传递枚举参数
类的继承
//定义矩形类
class Rectangle
{
   //成员变量,不需要let关键字
   private  width: number
   private  length: number
   private  tap: string
   
   //构造函数,constructor是关键字
   constructor(width:number,length:number,tap:string)
   {
       this.width = width
       this.length = length
       this.tap=tap
   }
   
   //成员方法
   public area(): number
   {
       return this.width * this.length
   }
   
public getTap(): string 
{
    return  `this tap is  ${this.tap}`;  
}


//定义正方形类
class Square extends Rectangle   //继承父类Rectangle
{
    constructor(side: number,tap:string)
    {
        //调用父类构造
        super(side,side,tap)
    }
}

let s:Square = new Square(20,"世界")
console.log("正方形面积是"+s.area())

模块开发

当应用复杂时,我们可以将通用功能抽取到单独的ts文件(TypeScript文件),每个文件都是一个模块(model)。模块可以相互加载,提高代码复用性。


//使用export将代码导出,方便其他人使用
export class Rectangle
{
   //成员变量,不需要let关键字
   private  width: number
   private  length: number
   
   //构造函数,constructor是关键字
   constructor(width::number,length::number)
   {
       this.width = width
       this.length = length
   }
   
   //成员方法
   public area(): number
   {
       return this.width * this.length
   }
}

//使用export将代码导出,方便其他人使用
export function  say666(name:string="陌生人"):void  
{
   console.log(name+" say 666")
}
import{Rectangle,say666} from  文件所在路径
//导入模块代码  Rectangle和say666
  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

freejackman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值