一、type概念
type作用就是给类型起一个新名字,支持基本类型、联合类型、元组给一个类型重新定义一个新的名字,常用于联合类型
let nums: test = 12;
console.log(nums);
type obj = {name:string};// 对象
let obja:obj = { name: '23' }
console.log(obja);
type add = (x:number,y:number) => number; // 函数
let add:add = (a,b) => a + b;
console.log(add(1,3));
type data = [number,string]; // 元组
let ar: data = [23,'ni'];
console.log(ar);
type numstring = test|string; // 联合类型
let numstr:numstring = 32;
console.log(numstr);
二、type和interface之间的区别
1、type和interface一样可以用来描述对象或者函数之间的类型。
name: string,
age: number,
say(s:string,y:string): string,
};
interface People {
name: string,
age:number,
say(x:string,y:string):string
}
let testObj:User = {
name: '李四',
age: 23,
say(x,y){ return x + y}
}
console.log(testObj.say('你','我'));
2、interface中的extends和implement和type中的类型交叉&
name: string;
}
interface User extends Name {
age: number
}
let stu:User = {name: 'wang', age: 10}
//interface的扩展可以通过type交叉(&)类型实现
type Name = {
name: string;
}
type User = Name & {age: number}
let stu:User={name: 'wang', age: 18}
//interface 扩展 type
type Name = {
name: string;
}
interface User extends Name {
age: number;
}
let stu:User={name: 'wang', age: 89}
//type与interface交叉
interface Name {
name: string;
}
type User = Name & {
age: number;
}
let stu:User={name:'wang', age: 18}
3、type中有个in的关键词可以进行映射类型,interface没有
type DuKey = {
[Key in Keys]: string //类似 for ... in
}
let stu: Dukey = {
name: 'wang',
sex: 'man'
}