Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub

接口类型

可选属性

interface IState {
    name: string,
    age?:number  //可有可无
}

let obj: IState
obj = {
    name: 'qdleader',
    age:12
} 
obj = {
    name: 'qdleader',
} 

属性个数不确定时候

interface IState2 {
    name: string,
    age: number,
    [propName:string]:any
}
let obj2: IState2 = {
    name: 'qdleader',
    age: 12,
    sex:'male',
    isMarry:true
}

只读属性

interface IState3 {
    readonly name: string,
}
let obj3: IState3
obj3 = {
     name: 'qdleader',
} 
obj3.name = 'qdleader1' // name 一旦定义赋值了就禁止修改

接口继承

如果两个接口之间有相同的属性或方法,可以将公共的属性或方法抽离出来,通过继承来实现复用

语法:

interface 接口2 extends 接口1 {
    属性1: 类型1, // 接口2中特有的类型 
 }
interface a { 
    x: number; 
    y: number 
}

// 继承 a
// 使用 extends(继承)关键字实现了接口
interface b extends a {
  z: number
}

// 继承后,b 就有了 a 的所有属性和方法(此时,b 同时有 x、y、z 三个属性)

接口和类型 的区别

interface(接口)和 type(类型别名)的对比:

相同点:都可以给对象指定类型

不同点: 接口,只能为对象指定类型。它可以继承。 类型别名,不仅可以为对象指定类型,实际上可以为任意类型指定别名

先有的 interface,后有的 type,推荐使用 type // 接口的写法------------- interface IPerson { name: string, age: number }

const user1:IPerson = { name: 'a', age: 20 }

// type的写法------------- type Person = { name: string, age: number } const user2:Person = { name: 'b', age: 20 }

Edit this page
最近更新: 2025/12/2 01:46
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人