TS里interface和type怎么用的,区别是什么?
【TS里interface和type】一.interface 最常见的是:对象类型接口;
1.对象类型接口用于定义对象的类型:
interface IPerson{
name:string;
age:number;
}
let tom:IPerson={
name:’Tom’;
age:25;
}
- 接口中未定义的属性不能在对象中使用,会报错;
- 对象的属性个数必须和接口的属性个数完全一致,除非使用了‘?’的可选属性;
- 对象接口的几个属性:
name:string; ——>确定属性
age?:number; ——>可选属性
readonly id:number; ——>只读属性
}
- 注意:一旦使用了任意属性,那么,确定属性和可选属性的属性值类型必须是任意属性值类型的子集(一致或者是子集);
5.只读属性只能在定义接口类型的时候赋值,如在接口中,但不能在其他地方重新赋值(因为它是只读的属性,不能重新赋值);
interface FullName {
firstName:string;
secondName:string;
}
function printName(name:FullName){
console.log(name.firstName);
}
let obj={//传入的参数必须包含firstName和secondName,但可以有其他参数;
//如果直接传入,就会报错,直接传入只能是firstName和secondName,不能包含 其他的;
age:20,
firstName:'张',
secondName:'三'
};
printName(obj);
//2.函数类型接口:
interface encrypt{
(key:string,value:string):string;
}
let md5:encrypt=(key:string,value:string):string=>{
return key+value;
};
console.log(md5('name', 'zhangsan'));
二.type是类型别名, 就是给类型起一个新名字,必须使用type对新名字进行定义;
如:type Name=string;
如:type a=string | number;
如:type NameResolver=()=>string; 这里的‘=>’不表示箭头函数,箭头左边表示形参,右边表示返回值;
- 类型别名,常用于联合类型,如:type a=string | number;
- 使用’typeof 变量’,拿到变量的类型;
- 类型别名和字符串字面量类型都必须使用type进行定义;
推荐阅读
- deno|deno连接mysql数据库
- deno|deno简易封装一个http服务器(路由-上篇)
- XQuery教程入门介绍
- 理解 JavaScript 的运行环境
- 前端学习|vue3.0 实现旋转木马
- JavaScript|JavaScript-函数方法apply()、call()、bind()
- JavaScript|JavaScript(第三章第1课)(内部对象--(Date))
- 前端|VUE + Echart 5.3.2 graph关系图代码
- 微信小程序|uniapp 微信小程序 下拉刷新