簡體   English   中英

定義打字稿類方法

[英]Define typescript class method

我找不到有關類方法“先聲明然后初始化”的任何信息,例如我可以這樣做(下面的代碼),先聲明getName()然后對其進行初始化,tslint提示我我不能這樣做,然后我應該做什么如果不想構造,例如public getName(name: string): string { return this.name }嗎?

 class Cat { public getName(name: string): string; constructor() { ... } getName(name) { return this.name; } } 

使用單獨的“聲明然后初始化”的原因之一是,它有助於將公共接口與私有實現分開。

在TypeScript中,可以通過將接口用作聲明並將類用作初始化來實現。 另外,TypeScript具有內置語言內置的模塊系統,因此,不必在類中將某些內容公開和將某些內容私有,您可以使整個類成為私有實現細節,而不是在模塊外部導出和使用:

export interface Cat {
    getName(name: string): string;
}


// NOTE: this whole class is an implementation detail and is not exported
class CatImpl implements Cat {

  name: string;

  constructor() { }


  getName(name: string) {
    return this.name;
  }
}

// this is exported and is publicly available for creating Cats
export function createCat(): Cat {
    return new CatImpl();
}

盡管我看不出您為什么要這樣做的充分理由,但這也是不可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM