TScript 类型注解和推论

本文介绍了TypeScript中的类型注解,包括基本类型、数组类型、联合类型以及函数类型的注解方式。同时,讲解了可选参数、接口的使用和继承,以及类型推论的概念,展示了如何在编程中确保类型安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在TypeScript中,类型注解是用来指定变量、函数参数、函数返回值等的类型信息,以提供静态类型检查。类型注解使用冒号(:)后跟上相应的类型。

基本类型注解

let num:number = 123
let num2:number = 456

// 类型注解,全小写
let str:string = 'zfc'
let bol:boolean = false
let nul:null = null
let und:undefined = undefined

注意:类型注解,全小写

数组类型注解:

两种方法

// 数组类型注解

arr:string[] 

array:Array<string> 

// 数组类型注解
let arr:string[] = ['君不见','黄河之水天上来','奔流到海不复回']
let array:Array<string> = ['君不见','高堂明镜悲白发','朝如青丝暮成雪']

console.log(arr, array)

联合类型的使用

数组中既有 number 类型,又有 string 类型,这个数组的类型应该如何写

unite:(number | string | boolean)[]

// 联合类型的使用
let unite:(number | string | boolean)[] = [12, 34, '君不见', false]

console.log(unite)

有一个变量, 它的类型可能是nul l也可能是number 如何写

let uniteId:(number | null) = 123

console.log(uniteId)

函数类型注解

这里使用了类型别名 Fn 来定义一个函数类型的别名,该别名表示接收两个 number 类型的参数并返回一个 number 类型的值。然后,用 Fn 类型别名来注解 add2 和 addFn2 这两个函数。这两个函数的参数类型和返回值类型都符合 Fn 类型的定义。

// 函数类型
// 普通函数注解
function add(a:number ,b:number):number {
  return a + b
}
// 箭头函数注解
let addFn = (a:number ,b:number):number => {
  return a * b
}

// 函数注解 + 类型别名
type Fn = (a:number ,b:number) => number

let add2:Fn = (a, b) => {
  return a + b
}
let addFn2:Fn = (a, b) => {
  return a * b
}

console.log(add(12, 13), addFn(2, 3), add2(12, 13), addFn2(2, 3))

函数可选参数

在 TypeScript 中,你可以使用问号(?)来标记函数参数为可选参数。可选参数意味着在函数调用时可以选择性地省略该参数。

// 函数可选参数
let addFn3 = (a:number, b?:number) => {
  console.log(a,b)
}

addFn3(1)
addFn3(1, 2)

函数类型注释

符号 ? 可选标注,不标注,则为必选项

// interface-接口-基本使用

interface news {

  code: number,

  msg: string,

  data: {

    name: string,

    age: number,

    // ?可选标注,不标注,则为必选项

    city?:string

  }

}

const news1: news = {

  code: 200,

  msg: 'success',

  data: {

    name: '张三',

    age: 999,

    city:'中国'

  }

}

const news3: news = {

  code: 200,

  msg: 'success',

  data: {

    name: '张三',

    age: 999

  }

}

它的继承类型

继承可以用于扩展接口的定义,使一个接口继承另一个接口的属性和方法。通过继承,你可以复用已有的接口定义,并在其基础上添加新的属性或方法。

    // 继承
interface Goods extends news {
  fond:string
}
const news2: Goods = {
  fond:'篮球',
  code: 200,
  msg: 'success',
  data: {
    name: '张三',
    age: 999
  }
}

console.log(news2)

TScript 的类型推论

在TypeScript中,类型推论(Type Inference)是指在没有明确指定类型注解的情况下,编译器会根据变量的初始化值自动推断出其类型。这意味着你可以省略某些变量的类型注解,让编译器根据上下文进行类型推断。

下面是一些示例来说明类型推论的工作方式:

let name = "John";  // TypeScript会推断name的类型为string
let age = 25;  // TypeScript会推断age的类型为number
let isStudent = true;  // TypeScript会推断isStudent的类型为boolean

在上述代码中,变量name的初始化值是一个字符串,所以TypeScript会自动推断name的类型为string。同样地,变量age的初始化值是一个数字,所以TypeScript会推断age的类型为number。变量isStudent的初始化值是一个布尔值,因此TypeScript会推断isStudent的类型为boolean

类型推论不仅限于基本类型,它还适用于对象、函数等复杂类型的推断:

let person = { name: "John", age: 25 };  // TypeScript会推断person的类型为{ name: string, age: number }

function add(x: number, y: number) {
  return x + y;
}  // TypeScript会推断add的返回值类型为number

在上述代码中,变量person的初始化值是一个具有nameage属性的对象,TypeScript会推断person的类型为{ name: string, age: number }。函数add的逻辑中使用了+操作符,因此TypeScript会推断add函数的返回值类型为number

尽管类型推论在很多情况下可以提供便利,但有些情况下可能会导致意外的类型推断结果。在这些情况下,你可以明确指定类型注解来覆盖类型推断的结果,以确保代码的类型安全性。

-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值