typescript面试题

interface/type的关区别和使用

总结

  1. interface:可扩展,支持声明合并,适合定义对象和函数,支持extends
  2. type: 更灵活,类型别名,但不能重复定义,支持联合/交叉类型

interface:

  1. 只能定义对象结构
interface User {
  name: string;
  age: number;
}
  1. 声明合并
interface User {
  name: string;
}

interface User {
  age: number;
}

// 自动合并为:
// interface User { name: string; age: number; }

const u: User = { name: 'Tom', age: 20 }; // ✅ 正确
  1. 继承与扩展
interface Person {
  name: string;
}

interface User extends Person {
  age: number;
}

实现类

// implements type(只要 type 是对象结构)
class User implements UserInterface {
  // 必须实现 interface 定义的结构
}

type:

  1. 类型别名
type User = {
  name: string;
  age: number;
};

// 更强大的能力:
type ID = string | number;
type Point = [number, number];
type Callback = (data: string) => void;
  1. 不支持重复定义
  2. 交叉类型
type Person = {
  name: string;
};

type User = Person & {
  age: number;
};
posted @ 2025-09-11 14:14  躺尸的大笨鸟  阅读(6)  评论(0)    收藏  举报