学习TypeScrip3(接口和对象类型)

在typescript中,我们定义对象的方式要用关键字interface(接口),我的理解是使用interface来定义一种约束,让数据的结构满足约束的格式。

1. 基础用法

//这样写是会报错的 因为我们在person定义了a,b但是对象里面缺少b属性
//使用接口约束的时候不能多一个属性也不能少一个属性
//必须与接口保持一致
interface Person {
	b: string;
	a: string;
}

const person: Person = {
	a: '213',
};

2. 重名interface 可以合并

//重名interface  可以合并
interface A {
	name: string;
}
interface A {
	age: number;
}
var x: A = { name: 'xx', age: 20 };
//继承
interface A {
	name: string;
}

interface B extends A {
	age: number;
}

let obj: B = {
	age: 18,
	name: 'string',
};

3. 可选属性 使用?操作符

//可选属性的含义是该属性可以不存在
//所以说这样写也是没问题的
interface Person {
	b?: string;
	a: string;
}

const person: Person = {
	a: '213',
};

4. 任意属性 [propName: string]

需要注意的是,一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集:

//在这个例子当中我们看到接口中并没有定义C但是并没有报错
//应为我们定义了[propName: string]: any;
//允许添加新的任意属性
interface Person {
	b?: string;
	a: string;
	[propName: string]: any;
}

const person: Person = {
	a: '213',
	c: '123',
};

5. 只读属性 readonly

readonly 只读属性是不允许被赋值的只能读取

//这样写是会报错的
//应为a是只读的不允许重新赋值
interface Person {
	b?: string;
	readonly a: string;
	[propName: string]: any;
}

const person: Person = {
	a: '213',
	c: '123',
};

person.a = 123;

6. 函数属性

interface Person {
	b?: string;
	readonly a: string;
	[propName: string]: any;
	cb: () => void;
}

const person: Person = {
	a: '213',
	c: '123',
	cb: () => {
		console.log(123);
	},
};

学习TypeScrip4(数组类型)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值