1.类型注解
语法:(变量): type = (值) 作用:给变量约束类型,类型约束了是什么类型就只能赋值什么类型的
eg: let age:number=18 ; number 就是类型注解
2.常用基础类型
1.js已经有类型
1.基础类型:number,string,boolean,null,undefined,symbol
2.引用类型:对象,数组,函数
2.ts新增类型
1.联和类型,自定义类型,接口,元组,字面量类型,枚举,void,any
3.基础类型
number,string,boolean,null,undefined,symbol
let sum: number=1;
let name: string = '小小静'
let num: null= null
let num: undefined= undefined
let num1: symbol = Symbol()
4.对象类型
object(对象,数组,函数)
特点:在ts中更加细化,每个具体的对象都有自己的类型语法
(1) 数组类型:
语法: 类型[],Array<类型>
各个元素的类型必须得一致
eg:number[],boolean[],Array<string>
let list: number[] = [1, 2, 3]
let list: string[] = ['1', '2', '3']
let list: Array<string> = ['1', '123']
let list: Array<any> = [1, '123']
(2)联合类型:
(|) 在ts中叫做联合类型,可以同时几个类型中任意一种
eg:(number|string)[]
(3)类型别名:
类型别名:为任意类型琪别名
使用场景:当同一类型(复杂)被多次使用时,可以通过类型别名,简化为类型的使用
语法:1.type关键字创建类型名
2.直接使用类型别名昨晚变量的类型注解
eg:type CustomArray
type CustomArray = (number | string)[]
let arr1: CustomArray = [1, 3, '4']
let arr2: CustomArray = [1, '4']
(4)函数类型:
函数参数和返回值的类型定义
为函数指定类型的两种方式:1.单独指定参数,返回值类型 2.同时指定参数,返回值类型
1.单独指定
num1: number 指定参数
():number 指定返回值
function add(num1: number, num2: number): number {
return num1 + num2
}
2.同时指定
函数表达式时,可以通过箭头函数形式的语法为函数添加类型
变量名称:(参数类型)=>返回类型
1.拆解
add1: (num1: number, num2: number)
2.普通函数
const add1 = (num1, num2) => {
return num1 + num2
}
3.组装
const add1: (num1: number, num2: number) => number = (num1, num2) => {
return num1 + num2
}
3.void类型
void:函数没有返回值时(ts新增类型)
void与any正好相反, 表示没有任何类型, 一般用于函数返回值。
在TS中只有null和undefined可以赋值给void类型
function add(): void { console.log('888')}
add()
4.可选参数类型
使用函数实现功能时,参数可以传也可以不传,这种情况下,指定类型时用可选参数
语法: 在参数名称后面添加?
规定:可选参数只能出现在参数列表的后面
function slice1(s?: number, end?: number): void {
console.log('开始:' + s, '结束:' + end)
}
slice1()
slice1(1)
slice1(1, 3)
(4)对象类型:
1.语法
直接使用{},属性名:类型,方法名():返回值类型
1.如果方法有参数,要写明greet(name:string):void
2.可以改成多行,去掉分号
3.方法可以使用箭头函数方式
let person: { name: string; age: number; say(): void; greet(name: string): void } = {
name: 'za',
age: 13,
say() {},
greet(name) {}
}
//箭头函数方式
let person1: {
name: string
age: number
say: () => void
greet(): (name: any) => void
} = {
name: 'za',
age: 13,
say() {}
}
2.可选属性 ?表示
function myAdd(config: { url: string; method?: string }) {}
myAdd({ url: 'ss' })
4.5.接口
当一个对象类型被多次使用时,一般会使用接口来描述对象的类型,达到复用
语法:1.用interface 关键字声明接口
interface Iperson {
name: string
age: number
}
let person: Iperson = {
name: 'ZZ',
age: 18
}
1.interface和type的区别:
interface(接口)和type(类型别名)的区别:
1.相同点:都可以给对象指定类型
2.不同点:
接口:只能为对象指定类型
类型别名:可以为任意类型指定别名 (对象时可以用接口/类型别名,其他类型只能用类型别名)
interface Iperson {
name: string
age: number
}
type Iperson = {
name: string
age: number
}
type NumStr=number | string
let person: Iperson = {
name: 'ZZ',
age: 18
}
2.extends:
如果两个接口之间有相同的属性或方法,可以将公共的属性抽离出来,通过继承实现复用
interface p1{x:number,y:number}
interface p2{x:number,y:number,z:number}
interface p3 extends p1{z:number}