簡體   English   中英

為什么Angular中的ngOnInit不是私有的?

[英]Why is not ngOnInit in Angular private?

我正在檢查代碼示例,甚至文檔都沒有得到任何信息。 然后,我谷歌一段時間,仍然沒有。

我們為什么打字

ngOnInit() { ... }

代替

private ngOnInit() { ... }

或者,就此而言,只要我抱怨這個話題

private ngOnInit() : void { ... }

擁抱TypeScript的全部力量?

編輯

根據評論我需要擴展問題。 我們為什么不寫:

public ngOnInit() : void { ... }

代替?

根據評論我需要擴展問題。 我們為什么不寫: public ngOnInit() : void { ... }而不是?

TypeScript能夠提供上下文類型信息,因此在實現接口時,不需要從接口重復類型。

例如,如果您考慮以下縮短的示例:

interface OnInit { 
  ngOnInit(): void
}

const example: OnInit = {
   ngOnInit: function () { }   
}

如果將鼠標懸停在ngOnInit您將看到返回類型已經無效,因為它已根據情況為您推斷出返回類型。

上下文類型推斷

簡而言之,TypeScript希望避免重復不必要的注釋。

返回類型兼容性

有一種情況可能會讓您考慮添加返回類型注釋。 如果沒有注釋,則允許以下內容:

const x: OnInit = {
    ngOnInit: function () {
        return 4;
    }   
}

OnInit接口的特定情況下,這不會導致任何問題,因為忽略了返回類型。 但是,如果您希望被告知您的返回類型看起來不正確,那么注釋會為您提供其他信息:

interface OnInit { 
  ngOnInit(): void
}

const x: OnInit = {
    ngOnInit: function (): void {
        return 4;
    }   
}

像這樣:

返回類型檢查

該方法是從Angular調用的。 如果它是私人的,則無法從外部調用。

Angular會忽略返回的值,因此返回類型無關緊要。

暫無
暫無

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

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