ts 学习

继承 缺省 只读
// 接口继承的格式 特点是 具有父接口的属性类型
interface NameItf {
	name:string;
}
interface AgeItf {
	age:number;
}
interface PersonItf extends NameItf,AgeItf{
	height:number;
}

let p:PersonItf;
p={
	name:'小红',
	age:18,
	height:160
}
同名
// 接口可以同名 特点是合并了(都具有)所有属性类型
interface AItf {
	age:number;
}
interface AItf {
	name:string;
}
let p:AItf;
p={
	age:18,
	name:'小红'
}
缺省
// 属性名? 表示这个属性可以缺省 (定义数据的时候不写也没问题)
interface ATf {
	name:string;
	age?:number;
}
let p:ATf;
p={
	name:'小红'	
}
只读
// readonly属性名  表示这个属性只允许读取 不能修改 修改就报错
interface ATf {
	readonly name:string;
}
let p:ATf;
p={
	name:'小红'	
}
联合交叉类型
// & 优先于 |
let obj:{age:number;}&{name:string}|{age:string;}&{name:number}
obj={
	age:1,
	name:'小红'
}
obj={
	age:'小红',
	name:1
}
类型别名
//interface和type的区别
// 都可以用来自定义类型
// 类型别名支持联合和交叉类型定义
// 类型别名不支持重复定义 接口可以
type StrOrNum = string|number
let str:StrOrNum='1'
str=1

type ObjType = {a:number&2;b:string}
let objs={
	a:2,
	b:'11'
}
promise
interface DataItf{
	a:number;
	b:number;
}
interface ResItf{
	code:number;
	data: DataItf[]; //{a:number;b:number}[];
	msg:string;
}
let p:Promise<ResItf> = new Promise((resolve,reject)=>{
	resolve({
		code:0,
		data:[{a:1,b:2},{a,3,b:23}],
		msg:successs'
	})
})
p.then(res=>{
	if(res.code===0){
		// 逻辑判断
	}
})

ts 函数
// 接口定义函数类型
interface fnIt{
	(n:string):number
}
const fn:fnIt=(n:string)=>{
	return 1	
}
fn('')

// 类型别名定义函数类型

type fnTyp = (n:string)=>void
const fn2:fnTyp = (n:string)=>{}


// 函数作为对象属性出现的时候
interface FnIt{
	(n:string):number
}
interface ObjTtf{
	fn: FnIt
}
const obi:ObjItf={
	fn:(str)=>{
		renturn 1
	}
}
obj.fn('')
const types: Record<string, string> = {
  R: "tab1",
  "888": "tab2",
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值