Typescript type 和 interface区别

当利用ts的类型和接口时两者的影响(复杂情况)

接口只能定义东西数据构造示例。

// 复杂案例1interface User { name: string; age: number; sex?: string;}let user: User = { name: '', age: 233};// 复杂案例2interface User1<T> { name: string; age: number; sex?: string; details?: T;}const userObj: User1<{ hobby: string;}> = { name: '', age: 233, details: { hobby: '爱好吃饭', }};

类型偏向于间接定义的例子

类型也能够给一个或多个例子一个新的题目(用做变量)。

type Demo = string | number; // 赋值let test1: Demo = 1;let test2: Demo = '';

类型还能够定义东西示例。

type Demo = { [propname: string]: any};type Demo<T> = { [propname: string]: T;};和类型接口相对点。相反,1:type和interface都撑持扩展。// type 扩大type myObj = { name: string;}// &标识表记标帜type myObjPlus = myObj & { age: number };const newObj: myObjPlus = { name: '', age: 233};// interface 扩大interface myObj { name: string;};// extends承袭扩大interface myObjPlus extends myObj { age: number;};const newObj: myObjPlus = { name: '', age: 233};// 当然二者都撑持彼此交叉扩大// 情况1type myObj = { name: string;};interface myObjPlus extends myObj { age: number;};const newObj: myObjPlus = { name: '', age: 233};// 情况2interface user { age: number;};type myUser = { name: string;} & user;const newObj: myUser = { name: '', age: 233};和类型接口的差别点。1.区别1:类型能够是根本实例,组合实例或元组,以至任多么等。,界面还不清晰。type A = string;type B = string | unknown;type C = B | [ 1, 2 ,3 ,4]; // 赋值当变量用let test: C = '';2.区别:接口定义与合并属性同名,但是类型office没有抵达(将陈述一个错误并反复定义)// interface 定义重名了集合并属性,良多库ts源码外面都用到过类似法子行为扩大interface A { name: string;}interface A { age: number;}const aObj: A = { name: '', // 必须 age: 233 // 必须};总结应用场景

(其实我喜好怎么定义都能够,但是更好能拿到尺度点停止尺度化。)

类型的常见应用场景通俗定义底子或者连系规范<br />通俗定义元组规范<br />通俗定义函数规范<br />定义映照规范界面的应用场景需求interface 重名会主动兼并属性扩大的 <br />定义东西数据构造(没有运用type时)

您可以还会对下面的文章感兴趣:

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。