TypeScript 基本语法

本文介绍了TypeScript的基础概念,包括变量声明及其数据类型、条件控制(if-else和switch)、循环迭代、函数的定义与特性(如可选参数和默认值)、类和接口、以及模块开发。展示了TypeScript如何在JavaScript基础上添加静态类型检查和面向对象编程的支持。

TypeScript 官网:https://www.typescriptlang.org,
在官网的Playground中可以直接运行ts代码

1. 变量声明

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

// string 字符串,可以用单引号或双引号,也可以使用反引号,反引号中可以解析变量
let msg: string = 'hello world'
let str: string = `提示信息:${msg}`

// number 数值,整数,浮点数都可以
let age: number = 21

// any 不确定类型,可以是任意类型
let a: any = 'jack'

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

// 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])

2. 条件控制

TypeScript 与大多数开发语言类似,支持基于if-else和switch的条件控制。

if-else 语句:

//定义数字
let num:number=21

//判断是否是偶数
if(num % 2 === 0){
  console.log(num + '是偶数')
}else {
  console.log(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中,空字符串,数字0,null,underfind都被认为是false,其他值则为true。

3. 循环迭代

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 name: stirng[] = ['Jack', 'Rose']
// for in 迭代器,遍历得到数组角标
for (const i in names){
  console.log(i + ':' + names[i])
}

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

4. 函数

TypeScript 通常利用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(result)

// 箭头函数, 没有function关键字,简化写法
let sayHi = (name: string) =>{
 console.log('你好' + name + '!')
}
sayHi('Rose')

函数- 可选参数:

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

函数- 参数默认值:

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

5. 类和接口

TypeScript 具备面向对象变成的基本语法,例如interface, class, enum等。也具备封装、继承、多态等面向对象基本特征。

类、接口、枚举:

//定义枚举
enum Msg{
  HI = 'Hi'
  HELLO = 'Hello'
}

//定义接口,抽象方法接收枚举参数
interface A {
  say(msg: Msg):void
}

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

// 初始化对象
let a:A = new B()
a.say(Msg.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) {
    // 调用父类构造
    supre(side, side)
  }
}

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

6. 模块开发

应用复杂时,我们可以把通用功能抽取到单独的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
  }
}
// 定义工具方法,求矩形面积,并通过export导出
export funciton 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))
### TypeScript 基础语法教程 TypeScript 是一种开源的编程语言,它扩展了 JavaScript 的功能,提供了静态类型检查和其他特性。以下是 TypeScript 的基础语法内容: #### 1. 变量声明 在 TypeScript 中,变量可以通过 `let` 或 `const` 关键字进行声明,并且可以指定其类型。例如: ```typescript let message: string = "Hello World"; // 声明一个字符串类型的变量 ``` 注意:这里的 `string` 是小写的,和 `String` 不同。`string` 是 TypeScript 中定义的字符串类型,而 `String` 是 ECMAScript 中定义的一个类[^2]。 #### 2. 数据类型 TypeScript 提供了多种数据类型,包括但不限于以下几种: - **字符串 (string)**:用于表示文本数据。 - **数字 (number)**:用于表示整数或浮点数。 - **布尔值 (boolean)**:用于表示真 (`true`) 或假 (`false`)。 - **数组 (Array)**:用于存储一组相同类型的值。 - **元组 (Tuple)**:用于存储固定数量和类型的值。 - **枚举 (Enum)**:用于定义一组命名的常量。 - **任意类型 (any)**:用于表示任意类型的值。 例如,元组的定义如下: ```typescript let t1: [number, string, number] = [1, 'a', 3]; // 元组限定了各个数组中的类型值 let t2: [number, string, number?] = [1, 'a']; // 后面加上一个?代表可选 ``` 上述代码中,`t1` 是一个包含三个元素的元组,分别对应 `number`、`string` 和 `number` 类型。而 `t2` 的第三个元素是可选的[^4]。 #### 3. 运算符 TypeScript 支持多种运算符,其中严格相等运算符 `===` 是一种重要的运算符。它不仅比较两个操作数的值,还比较它们的类型。如果两个操作数的类型和值都相同,则返回 `true`;否则返回 `false`。例如: ```typescript console.log(0 === ""); // 返回 false,因为它们的类型不同 console.log(null === undefined); // 返回 false,尽管在某些比较中它们被视为“相等” ``` 由于其严格性,使用 `===` 通常被认为是一种更好的编程实践,因为它减少了意外行为并提高了代码的可读性[^3]。 #### 4. 函数 函数在 TypeScript 中可以通过指定参数类型和返回值类型来增强代码的安全性。例如: ```typescript function add(a: number, b: number): number { return a + b; } ``` 上述代码中,`add` 函数接受两个 `number` 类型的参数,并返回一个 `number` 类型的结果。 #### 5. 接口 接口是 TypeScript 中的一种重要特性,用于定义对象的结构。例如: ```typescript interface Person { name: string; age: number; } let person: Person = { name: "Alice", age: 25, }; ``` 上述代码中,`Person` 接口定义了一个对象的结构,包含 `name` 和 `age` 属性。 #### 6. 在线练习 如果没有搭建 TypeScript 的开发环境,可以直接使用在线 Playground 平台(https://www.typescriptlang.org/play)进行编码练习[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值