中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在TypeScript中實現接口的類

發布時間:2023-03-27 15:26:55 來源:億速云 閱讀:111 作者:iii 欄目:開發技術

這篇文章主要介紹“怎么在TypeScript中實現接口的類”,在日常操作中,相信很多人在怎么在TypeScript中實現接口的類問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么在TypeScript中實現接口的類”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

使用 implements 子句在類中實現接口,例如 class Developer implements Employee {}implements 子句通過定義類的所有屬性和方法來檢查類是否滿足接口。

interface Employee {
  id: number;
  name: string;
  tasks: string[];

  doWork(): void;
}

class Developer implements Employee {
  constructor(
    public id: number, public name: string, public tasks: string[]
   ) {
    this.id = id;
    this.name = name;
    this.tasks = tasks;
  }

  doWork() {
    console.log(`${this.name} writes code`);
  }
}

const dev = new Developer(1, 'Tom', ['develop', 'test', 'ship']);

console.log(dev.name); // ????? "Tom"

怎么在TypeScript中實現接口的類

我們也可以點擊上面的運行示例來查看結果。

implements 子句允許我們檢查一個類是否滿足特定的接口。

如果類未能正確實現接口,則會發出錯誤。

如果我們的類不希望在初始化時將特定值作為參數,請使用類屬性。

interface Employee {
  id: number;
  name: string;
  tasks: string[];

  address: {
    country: string;
    city: string;
  };

  doWork(): void;
}

class Developer implements Employee {
  tasks: string[] = ['develop', 'test'];

  address: { country: string; city: string } = {
    country: 'Austria',
    city: 'Linz',
  };

  constructor(public id: number, public name: string) {
    this.id = id;
    this.name = name;
  }

  doWork() {
    console.log(`${this.name} writes code`);
  }
}

const dev = new Developer(1, 'Tom');

console.log(dev.name); // ????? "Tom"

上面的示例直接設置類屬性,并在構造函數方法中接受參數。

我們可以使用這種方法來實現多個接口。

interface Employee {
  id: number;
  salary: number;
}

interface Person {
  name: string;
}

class Developer implements Employee, Person {
  constructor(
    public id: number, public name: string, public salary: number
  ) {
    this.id = id;
    this.name = name;
    this.salary = salary;
  }
}

const dev = new Developer(1, 'Tom', 100);

console.log(dev.name); // ????? "Tom"

Developer 類實現了 EmployeePerson 接口。

一個類可以根據需要實現盡可能多的接口。

實現接口時,我們必須確保在類上設置所有必要的屬性和方法。

interface Employee {
  id: number;
  salary: number;
}

// ?? Class 'Developer' incorrectly implements interface 'Employee'.
  // Property 'salary' is missing in type 'Developer'
  // but required in type 'Employee'.ts(2420)
class Developer implements Employee {
  constructor(public id: number) {
    this.id = id;
  }
}

怎么在TypeScript中實現接口的類

Developer 類實現了 Employee 接口,但沒有定義所需的薪水屬性,因此會發出錯誤。

我們要么必須將 salary 屬性添加到 Developer 類,要么在接口中將其標記為可選。

interface Employee {
  id: number;
  salary?: number; // ????? optional property (can be undefined)
}

class Developer implements Employee {
  constructor(public id: number) {
    this.id = id;
  }
}

salary 屬性被標記為可選,因此類不必定義它。

implements 子句所做的就是 - 它檢查類是否滿足特定接口,因此我們必須確保定義所有必需的屬性和方法。

implements 子句的目的只是檢查類是否可以被視為接口類型。

implements 子句不會更改類或其方法的類型。

interface Employee {
  multiply(a: number, b: number): number;
}

class Developer implements Employee {
  // ?? Error: Parameter 'a' implicitly has an 'any' type.ts(7006)
  multiply(a, b) {
    return a * b;
  }
}

怎么在TypeScript中實現接口的類

盡管該類實現了為 multiply 函數定義類型的 Employee 接口,但該類中的 multiply 方法不會自動被類型化。

這是因為 implements 子句不會改變類的類型。

interface Employee {
  id: number;
  name?: string; // ????? optional property
}

class Developer implements Employee {
  constructor(public id: number) {
    this.id = id;
  }
}

const dev = new Developer(1);

// ?? Error: Property 'name' does not exist on type 'Developer'.ts(2339)
console.log(dev.name);

怎么在TypeScript中實現接口的類

如果我們使用可選屬性實現接口,則不會在類中自動創建它。

我們使用問號將 Employee 接口中的 name 屬性設置為可選。

這意味著它可以是字符串或具有未定義的值。

Developer 類正確實現了 Employee 接口,因為 name 屬性不是必需的,但是該屬性不會自動分配給該類。

到此,關于“怎么在TypeScript中實現接口的類”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

禄丰县| 隆尧县| 云梦县| 佛山市| 京山县| 即墨市| 宕昌县| 革吉县| 柏乡县| 红河县| 和平县| 敦煌市| 金秀| 罗田县| 阿城市| 雷波县| 泰顺县| 喀什市| 达州市| 白银市| 淮阳县| 嘉义县| 兰西县| 涪陵区| 中宁县| 凤山市| 武安市| 北京市| 巴林左旗| 封开县| 渑池县| 婺源县| 沈丘县| 奉化市| 乌拉特前旗| 奈曼旗| 镇安县| 泸州市| 福清市| 紫阳县| 巢湖市|