TypeScript interface extends interface All In One


TypeScript interface extends interface All In One

interface extends one interface ?


interface Animal {
  year: string;
}

// 接口 extends 一个接口 ?
interface Human extends Animal {
  name: string;
  // age: number | undefined;
  age?: number;
}

class Person implements Human {
  name: string;
  age: number;
  year: string;
  constructor(options: {
    name: string,
    age: number,
    year: string,
  }) {
    const { name, age, year } = options;
    this.name = name;
    this.age = age;
    this.year = year;
  }
}


interface extends multi interfaces ?


interface UFO {
  wtf?: string;
}

interface Animal {
  year: string;
}

// 接口 extends 多个接口 ?
interface Human extends Animal, UFO {
  name: string;
  // age: number | undefined;
  age?: number;
}

class Person implements Human {
  name: string;
  age: number;
  year: string;
  constructor(options: {
    name: string,
    age: number,
    year: string,
  }) {
    const { name, age, year } = options;
    this.name = name;
    this.age = age;
    this.year = year;
  }
}

class implements multi interfaces ?

interface Animal {
  year: string;
}

interface Human {
  name: string;
  // age: number | undefined;
  age?: number;
}

class Person implements Human, Animal {
  name: string;
  age: number;
  year: string;
  constructor(options: {
    name: string,
    age: number,
    year: string,
  }) {
    const { name, age, year } = options;
    this.name = name;
    this.age = age;
    this.year = year;
  }
}

class extends one class ?


class Human {
  name: string = '';
  // age: number | undefined;
  age?: number;
}

// Classes can only extend a single class ?
class Person extends Human {
  name: string;
  age: number;
  year: string;
  constructor(options: {
    name: string,
    age: number,
    year: string,
  }) {
    // Constructors for derived classes must contain a 'super' call.(2377)
    super();
    const { name, age, year } = options;
    this.name = name;
    this.age = age;
    this.year = year;
  }
}

class extends multi classes ?


class UFO {
  wtf?: string = '';
}

class Animal {
  year: string = '';
}

class Human {
  name: string = '';
  // age: number | undefined;
  age?: number;
}

// Classes can only extend a single class.(1174) ?
class Person extends Human, Animal {
  name: string;
  age: number;
  year: string;
  constructor(options: {
    name: string,
    age: number,
    year: string,
  }) {
    const { name, age, year } = options;
    this.name = name;
    this.age = age;
    this.year = year;
  }
}

extends & implements mixed


interface UFO {
  wtf?: string;
}

interface Animal {
  year: string;
}

class Human {
  name: string = '';
  // age: number | undefined;
  age?: number;
}

// 先 extends 一个 class, 再 implements 多个 interfaces ?
class Person extends Human implements Animal, UFO  {
  name: string;
  age: number;
  year: string;
  wtf?: string;
  constructor(options: {
    name: string,
    age: number,
    year: string,
  }) {
    super();
    const { name, age, year } = options;
    this.name = name;
    this.age = age;
    this.year = year;
  }
}



class UFO {
  wtf?: string;
}

class Animal {
  year: string = '';
}

class Human {
  name: string = '';
  // age: number | undefined;
  age?: number;
}

// 先 extends 一个 class, 再 implements 多个 class ?
class Person extends Human implements Animal, UFO  {
  name: string;
  age: number;
  year: string;
  wtf?: string;
  constructor(options: {
    name: string,
    age: number,
    year: string,
  }) {
    super();
    const { name, age, year } = options;
    this.name = name;
    this.age = age;
    this.year = year;
  }
}




class UFO {
  wtf?: string;
}

class Animal {
  year: string = '';
}

class Human {
  name: string = '';
  // age: number | undefined;
  age?: number;
}

// class 直接 implements 多个 class ?
class Person implements Human, Animal, UFO  {
  name: string;
  age: number;
  year: string;
  wtf?: string;
  constructor(options: {
    name: string,
    age: number,
    year: string,
  }) {
    // 'super' can only be referenced in a derived class.(2335)
    // super();
    const { name, age, year } = options;
    this.name = name;
    this.age = age;
    this.year = year;
  }
}



type alias


type UFO = {
  wtf?: string;
}

type  Animal = {
  // A type literal property cannot have an initializer.(1247)
  // year: string = '';
  year: string;
}

class Human {
  name: string = '';
  // age: number | undefined;
  age?: number;
}

// 先 extends 一个 class, 再 implements 多个 type alias ?
class Person extends Human implements Animal, UFO  {
  name: string;
  age: number;
  year: string;
  wtf?: string;
  constructor(options: {
    name: string,
    age: number,
    year: string,
  }) {
    super();
    const { name, age, year } = options;
    this.name = name;
    this.age = age;
    this.year = year;
  }
}



type UFO = {
  wtf?: string;
}

type Animal = {
  // A type literal property cannot have an initializer.(1247)
  // year: string = '';
  year: string;
}

type Human = {
  name: string;
  age?: number;
}

// 先 extends 一个 type alias, 再 implements 多个 type alias ?
// 'Human' only refers to a type, but is being used as a value here.(2693)
// 'extends' clause of exported class 'Person' has or is using private name 'Human'.(4020)
class Person extends Human implements Animal, UFO  {
  name: string;
  age: number;
  year: string;
  wtf?: string;
  constructor(options: {
    name: string,
    age: number,
    year: string,
  }) {
    super();
    const { name, age, year } = options;
    this.name = name;
    this.age = age;
    this.year = year;
  }
}

refs

https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html#function-overloads

https://zzk.cnblogs.com/my/s/blogpost-p?Keywords=TypeScript interface All In One


Flag Counter

?xgqfrms 2012-2020

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有??xgqfrms, 禁止转载 ???,侵权必究??!