在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
的初始化值是一个具有name
和age
属性的对象,TypeScript会推断person
的类型为{ name: string, age: number }
。函数add
的逻辑中使用了+
操作符,因此TypeScript会推断add
函数的返回值类型为number
。
尽管类型推论在很多情况下可以提供便利,但有些情况下可能会导致意外的类型推断结果。在这些情况下,你可以明确指定类型注解来覆盖类型推断的结果,以确保代码的类型安全性。
-