返回

TS关键字extends用法总结,干货满满不容错过!

前端

TSextends:从基础到高级

一、接口继承

在TS中,接口可以继承自其他接口,这是一种常见的继承方式。使用extends关键字可以将一个接口的属性和方法继承到另一个接口中。

interface Animal {
  name: string;
  eat(): void;
}

interface Dog extends Animal {
  bark(): void;
}

const dog: Dog = {
  name: '旺财',
  eat() {
    console.log('狗狗在吃饭!');
  },
  bark() {
    console.log('狗狗在汪汪叫!');
  }
};

dog.eat();
dog.bark();

二、条件判断

在TS中,extends关键字还可用于条件判断。这种用法非常独特,在其他语言中很少见。它允许我们在类型系统中使用条件判断,从而实现更灵活的类型推断。

type IsEqual<T, U> = 
  T extends U ? true : false;

const result1: IsEqual<string, number> = false;
const result2: IsEqual<string, string> = true;

上面的代码中,我们定义了一个名为IsEqual的类型,它可以判断两个类型是否相等。如果两个类型相等,则返回true,否则返回false。

三、高级类型推断

在TS中,extends关键字还可以用于高级类型推断。例如,我们可以使用extends关键字来推断数组元素的类型。

function getArray<T>(items: T[]): T[] {
  return items;
}

const numbers = getArray([1, 2, 3]);
const strings = getArray(['a', 'b', 'c']);

numbers.forEach((num) => {
  console.log(num);
});

strings.forEach((str) => {
  console.log(str);
});

上面的代码中,我们定义了一个名为getArray的函数,它可以接受一个数组作为参数,并返回一个类型相同的数组。

结语

TS关键字extends用法广泛,涵盖了接口继承、条件判断和高级类型推断等多个方面。通过熟练掌握extends关键字,我们可以更灵活地使用TS类型系统,从而编写出更加健壮和可维护的代码。