学习TypeScript,为鸿蒙的ArkTS学习做准备

因为ArkTS和TypeScript很像,所以先学习TypeScript对掌握ArkTS很有帮助,我学完感觉和C++、java有很大的相似之处,当然可能还有其他语言,但我并不是很了解哈,总而言之,TypeScript语言集齐了其他语言的很多优点,值得学习

快速熟悉TypeScript

写的代码可以在这个网址练习或验证代码是否正确(演练场中练习代码):TypeScript: JavaScript With Syntax For Types.

变量声明:

let msg: string = 'hello world'

| | |

| | 变量的数据类型

| 变量名,自定义

声明变量的关键字,const代表常量,let代表变量

变量的数据类型种类
//字符串,可以用单引号或者双引号  
let  msg: string = "hello"
console.log('msg'+msg)
//数值,整数,浮点数都可以
let age: number = 21
console.log('age:'+age)
//布尔
let finished: boolean = true
console.log('finished'+finished)
//any:不确定类型,可以是任意类型,赋成jack也能改成21
let a: any = 'jack'
a=21
//union:联合类型,可以是多个指定类型中的一种
let u: string|number|boolean = 'rose'
u = 18
console.log("u:"+u)
//对象
let p = {name:'Jack',age:12}
console.log(p.name)
console.log(p['name'])
//数组,元素可以是任意其他元素
let names: Array<string> = ['Jack','Rose']
let ages: number[] = [21,18]
console.log(names[0])

条件控制

支持if - else 和 switch

if-else
let num:number = 21
if(num % 2 === 0){ 
    console.log(num + '是偶数')
}else{
    console.log(num + '是奇数')
}

//判断是否为正数
if(num > 0){
    console.log(num+'是正数')
}else if(num < 0){
    console.log(num+'是负数')
}else{
    console.log(num+'为0')
}

//判断变量是否存在
let data: any;
if(data){
  console.log("数据存在:"+data)
}else{
  console.log("数据不存在!")
}
注意1

‘’===‘’是比较严格比较操作符,他在比较时不会进行类型转换当数据值和类型都相等才会返回true。

‘’==‘’是相等比较操作符,它在比较时会进行隐性的数据转换,把两个比较数转换为同一种类型,会有意想不到的结果。

console.log(1 == "1");  // true
console.log(true == 1);  // true
注意2

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

if(true){
//num非空,可以执行逻辑
}

用途:一般情况下,当一个数啥也没有,我们并不用处理它,用这个知识点就可以判定它存不存在,可以帮助我们节省麻烦。

switch

switch和其他编程语言中差不多

let grade: string='A'
switch(grade){
  case 'A':{
    console.log('优秀')
    break
  }
  case 'B':{
    console.log('合格')
    break
  }
}

循环迭代

for和while

for(let i = 1;i<=10;i++){
  console.log("点赞" + i + "次")
}

let i = 1;
while(i <= 10){
  console.log("点赞" + i + "次")
  i++;
}

当然,一些内置类型有自己的快捷语法,比如Array等

let names: string[] = ["Jack","Rose"]

//fot in 迭代器,遍历得到数组角标
for(const i in names){
  console.log(i + ':' +names[i])      //i就是拿到的角标,输出i就是输出下标
}

//for of 迭代器,直接得到元素
for(const name of names){
  console.log(name)
}

函数

函数用function关键字来声明函数,并且支持可选参数、默认参数、箭头函数等特殊语法。

//无返回值,void可省略
function sayHello(name: string):void{
  console.log("你好," + name +"!")
}

//有返回值函数
function sum(x: number,y: number): number{
  return x + y
}
let result = sum(21, 18)
console.log("21 +18" + result)


//箭头函数(简单定义函数的方法)
let sayHi = (name: string) =>{  //没有写function,因为这里默认定义的变量的类型是function
  console.log("你好," + name + "!")
}
sayHi("Rose")

//可选参数,在参数后加?,表示该参数是可选的
function sayHello(name?: string){
  name = name ? name : "陌生人"
  console.log("你好," + name + "!")
}
sayHello("Jack")
sayHello()

//默认参数
function say(name: string = "陌生人"){  //这里看起来像是把name定义成陌生人
  console.log("你好" + name +"!")    //但实际上是如果没传参,用定义的,传参了就用传入的参数
}
say("Jack")
say()

类和接口

typescript具有面向对象编程的基本语法,例如Interface\class\enum等。也具备封装、继承、多态等面向对象基本特征。

//定义枚举
enum M{
  HI = "hi",
  HELLO = "Hello"
}

//定义接口,抽象方法接受枚举参数
interface A{
  say(m: M):void  //凡是接口和类内的方法不需要加function关键字
} //这里的方法名叫say ,参数是m 类型是M前面定义的,返回值是void,无返回值

//定义一个类来实现接口
class B implements A{  //实现了A接口
  say(m: M):void{
    console.log(m + ",I am B")
  }
}

//初始化对象
let a:A = new B()//这里是把子类对象赋值给了父类类型,a的类型是A,由B实现,
                //所以也没错,正常来说应该是a:B
//调用方法,传递枚举参数
a.say(M.HI)
class Rectangle{
  private width: number
  private length: number

  constructor(width: number,length: number){
    this.width = width
    this.length = length 
  }
  public area(): number{
    return this.width * this.length
  }
}
class Square extends Rectangle{
  constructor(side: number){
    super(side, side)
  }
}

let s = new Square(10)
console.log("正方形面积为:"+ s.area())

模块开发

目的:提高代码复用性,应用复杂时,我们可以把功能抽取到单独的ts文件中,每个文件都是一个模块(module),模块之间可以相互加载,提高代码复用性

注意文件名,这个是rectangle.ts文件

//定义矩形类,通过export导出
export class Rectangle{
  private width: number
  private length: number

  constructor(width: number,length: number){
    this.width = width
    this.length = length 
  }
  public area(): number{
    return this.width * this.length
  }
}

//定义工具方法,求矩形面积,并通过export导出
export function area(rec: Rectangle): number{
  return rec.width * rec.length
}

再定义一个index.ts

//通过import语法导入,from后面写文件的地址
import {Rectangle, area} from'../rectangle' //这里是上目录

//创建Rectangle对象
let r = new Rectangle(10,20)

//调用area方法
console.log("面积为:" + area(r))
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猿究院-Cu-Sn合金

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

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

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

打赏作者

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

抵扣说明:

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

余额充值