TypeScript基本语法

内容

  • 变量声明
  • 条件控制
  • 循环迭代
  • 函数
  • 类和接口:因typescript有面向对象的一些特征。
  • 模块开发:把一些代码做成模块做导入导出,从而提高代码的复用性、提高开发的效率。

一、变量声明

        TypeScript基于JavaScript,并在此基础上加入了静态类型检查功能,因此每一个变量都有固定的数据类型。

let msg: string = 'hello world'

右侧是给变量初始化的字面值        左侧为变量声明的语法

let为声明变量的关键字;const则代表常量

msg为变量的名称,可自定义

String为变量的数据类型,相对JavaScript多了这一块内容

        typescript支持的一些数据类型:

                //  string:字符串,可以用单引号或双引号

                //  number:数值、整数、浮点数都可以;也支持二进制、八进制、十六进制,表示的方式与其他语言类似,需要在数字前面加上相应前缀,二进制: 0b、八进制: 0、十六进制: 0x

                //  boolean:布尔:true和false

                //  any:不确定什么类型,可以是任何类型。作用就是告诉编译器不要做类型检查,定义普通变量时候慎用

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

let u: string|number|boolean = 'rose'
u = 18

为什么Typescript有静态类型检查功能,还会出现any和union数据类型呢?

         any和union在定义函数(或一些特殊结构)的时候用的多一点,定义函数时如果把参数写死了,则导致函数扩展性变弱,如果参数用的是any或union,就可以接受多种类型的参数,方法内部做不同的处理,这样方法的拓展性变得更强。

                //  Object:对象,是一种匿名,直接定义出对象内部的结构

let p = {name: 'Jack', age: 21}
console.log(p.name)
console.log(p['name'])

        容器:

                //  Array:数组,元素可以是任意其他类型

let names: Array<string> = ['Jack','Rose']
let ages: number[] = [21, 18]
console.log(names[0])

typescript更多语法:TypeScript: JavaScript With Syntax For Types. (typescriptlang.org) 

二、条件控制

        Typescript支持基于if-elseswitch的条件控制

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 < ) {
  console.log(num + '是负数')
} else {
  console.log(num+'为0')
}

注意:在TypeScript中,空字符串、数字、null、undefined都被认为 是false,其他值则为true

if (num){

      // num为空,可以执行逻辑

}

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
  }
}

三、循环迭代 

        Typescript支持for和while循环,并且为一些内置类型如Array等提供了快捷迭代语法

普通循环
//普通for
for(let i = 1; i <= 10; i++){
  console.log('点赞'+i+'次')
}
//while
let i = 1;
while(i <= 10){
  console.log('点赞'+i+'次')
  i++
}

        运行结果

 for迭代器
//定义数组
let names: string[] = ['Jack', 'Rose']

//for in 迭代器,遍历得到数组角标
for (const i in names) {
  console.log(i + ':' + names[i])
}

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

        运行结果 

四、函数

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

//无返回值函数,返回值void可以省略,void前面的冒号也可省略
//sayHello为函数名
//如果是多个参数,中间用逗号隔开
function sayHello(name: string): void{
  console.log('你好,'+ name + '!')
}
sayHello('Jack')

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

//箭头函数(简写写法),let申请变量sayHi,默认类型function
let sayHi = (name: string) =>{
  console.log('你好,' + name + '!')
}
sayHi('Rose')

 可选参数函数

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

升级版

//参数默认值,在参数后面赋值,表示参数默认值
//如果调用者没有传参,则使用默认值
function sayHello(name: string = '陌生人'){
  console.log('你好,' + name + '!')
}
sayHello('jack')
sayHello()

两者运行结果相同

 五、类和接口

        Typescript具备面向对象编程的基本语法,例如interface、calss、enum等。也具备封装、继承、多态等面向对象基本特征

类、接口、枚举
//定义枚举
//多个枚举项(诸如HI、HELLO为枚举项)之间用逗号隔开
//如果枚举项不赋值,它的默认值为数字,第一个为0,第二个为1,以此类推
enum Msg{
  HI = 'Hi',
  HELLO = 'hello'
}

//定义接口,抽象方法接受枚举参数
//凡是在类或者接口内定义的方法不需要加function关键字
//参数msg类型为Msg(枚举类型),无返回值(void)
interface A {
  say(msg: Msg):void
}

//实现接口:类
//implement是实现的意思,实现了A中的抽象方法say
//类和接口也可以理解为父子关系
class B implements A {
  say(msg: Msg): void {
    console.log(msg + ', I am B')
  }
}

//初始化对象
//new 创建对象
//B实现了A,就是A的一种,相当于把子类对象赋值给父类类型
//let后可以写A,也可以写B
let a:A = new B()
//调用方法,传递枚举参数
a.say(Msg.HI)

运行结果 

继承
// 定义矩形类
class Rectangle {
  //成员变量
  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
  }
}

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

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

运行结果 

六、模块开发 

        应用复杂时,可以通过功能抽取到单独的ts文件(typescript文件)中,每个文件都是一个模块(module)

模块可以相互加载,提高代码的复用率

文件rectangle.ts
//定义矩形类,并通过export到处
export class Rectangle {
  //成员变量
  private width: number
  private length: number
  //构造函数
  constructor(width: number, length: number) {
    this.width = width
    this.length = 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))

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TypeScriptJavaScript的超集,它新增了许多语法特性,使得类型不再可以随意转换,能大大减少开发阶段的错误。在TypeScript中,可以声明原始数据类型,如数字类型、字符串类型、布尔类型等。此外,还可以使用泛型来适用于多个类型,并且传入类型与返回类型是相同的。TypeScript还支持数组类型、元组类型、枚举类型等其他类型。另外,还有一些特殊类型,如void用于标识方法没有返回值,null表示对象缺失,undefined表示未定义的值,never表示从不会出现的值。此外,TypeScript还支持位运算符,如与运算、或运算、取反、异或、左移、右移和无符号右移等。123 #### 引用[.reference_title] - *1* *2* [带你了解Typescript的14个基础语法](https://blog.csdn.net/devcloud/article/details/121681921)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [TypeScript基本语法](https://blog.csdn.net/Linceo/article/details/105607304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值