TypeScript基础

本文介绍了TypeScript中不同类型系统的使用,强调了使用`unknown`代替`any`以提高安全性。讨论了数组、联合类型、对象、枚举、函数、类型别名和接口的声明方法,并举例说明了它们的用途。同时提到了元组和类型推论的概念。
摘要由CSDN通过智能技术生成

如果需要声明一个不确定的变量类型建议使用unknown,最好不要使用any因为不安全。
typescript类型

let a:unknown;  
let b:any;
let c:number;
let d:string;
let e:boolean;
let f:enum;   //枚举是一个可被命名的整型常数的集合,枚举类型为集合成员赋予有意义的名称
let g:never;   //never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值
let h:undefined;

any不安全原因:

//可见声明的b是number类型,但是被a赋值后污染了变成了string类型,而且没有报错
let a:any
let b:number
a= '123123'
b = a
//这样b=a就会报错
let a:unknown
let b:number
a= '123123'
b = a  //报错

数组&&联合类型

//声明一个数字类型的数组
let arr:number[]    
//联合类型
let arr:number[] | string[]  
let arr:(number | string)[] 

let arr:Array<number>
let arr:Array<number | string>

对象

//声明一个对象
let obj:{}

let obj:{name:string}   //给对象obj指定了一个属性name而且必须是string类型,多一个属性少一个属性都会报错
obj = {name:18}  //会报错定义的name必须为字符类型
obj = {name:'zs',age:18}  //会报错 没有age这个属性

let obj:{[propName:string]:number}   //都知道js里面的对象属性名称都是字符串类型的,这里意思是任意属性名称没有规定,但是属性值为number类型

//void 表示函数没有返回值,若指定为string则表示返回值为string类型以此类推
//函数声明可以使用箭头函数 ()=>void
let obj:{name:string,age:number,say():void,paly:(name:number|string)=>void } = {
	name:'zs',
	age:28,
	say(){},
	paly(name){
	}
}

let obj:{name:string,age:number,say():void}

类型别名

//用type创建类型别名
type CustomArray = (number|string)
let a:CustomArray 
等同于
let a:(number|string)

type CustomArray = (string[] | number[])
let a:CustomArray 
等同于
let a:(number[]|string[])

接口
描述对象类型,达到复用的目的

方式一:
interface IPerson {
	name:string,
	age:number,
	say():void
}
方式二:
type IPerson {
	name:string,
	age:number,
	say():void
}
类型别名和接口有一样的作用,都可以给对象指定类型
不同点:接口 只能给对象指定类型,类型别名 不仅可以给对象指定别名,还可以给任意类型指定别名
let person:IPerson ={
	name:'zs',
	age:18,
	say(){
	}
}

接口继承

interface person {
  name: string
  age: number
}

//接口继承  man继承person
interface man extends person {
  say(): void
}

let a: man = {
  name: 'zs',
  age: 18,
  say() {},
}

元组
元组类型是另一种类型的数组: 确切的知道包含多少元素以及特定索引对应的类型

let arr: [number, string]   //声明一个元组一共有两个元素,第一个元素为number类型 ,第二个类型为string类型。
arr = [1, 3]   //报错,索引为1的元素应该是string类型
arr = [1, '3']   //正确
arr = [1, '3',2]   //报错,只能包含两个元素

类型推论

let num:number = 10
function(num1:number,num2:number):number {
	return num1 + num2
}
//ts会自动帮忙推断你的类型
let num = 10  //可省略:number
function(num1:number,num2:number){   //可省略返回值的类型注解
	return num1 + num2
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值