TypeScript - 存取修飾詞:您的程式碼隱私友好指南

你好啊,未來的編程超級明星!? 我很高興能成為您在TypeScript存取修飾詞這段興奮旅程中的導遊。作為一個教了多年編程的人,我可以告訴您,理解這些概念就像是學會編程世界的秘密握手。所以,讓我們一起深入探索這些神秘吧!

TypeScript - Access Modifiers

存取修飾詞是什麼?

在我們深入細節之前,讓我們先來聊聊存取修飾詞是什麼。想像你正在建造一個超級酷炫的樹屋(這就是我们的代碼!)。存取修飾詞就像是你為誰可以爬上去、誰可以偷窺裡面、誰可以使用秘密隔間設定的規則。它們幫助我們控制代碼的哪些部分可以被訪問和使用。

在TypeScript中,我們有三個主要的存取修飾詞:

修飾詞 描述
public 從任何地方都可以訪問
private 只能在同一個類內訪問
protected 在類本身及其子類中可訪問

現在,讓我們詳細探索這些修飾詞!

公共存取修飾詞

public修飾詞就像是你把樹屋的門打開。任何人都可以進來,使用搖椅,或者借你的漫畫書。在代碼術語中,這意味著程序的任何部分都可以訪問和使用這些元素。

這裡有一個有趣的例子:

class Superhero {
public name: string;
public power: string;

constructor(name: string, power: string) {
this.name = name;
this.power = power;
}

public usePower() {
console.log(`${this.name} 使用 ${this.power}!`);
}
}

const spiderman = new Superhero("蜘蛛人", "蜘蛛網射擊");
console.log(spiderman.name); // 輸出:蜘蛛人
spiderman.usePower(); // 輸出:蜘蛛人 使用 蜘蛛網射擊!

在這個例子中,namepowerusePower()都是公共的。我們可以從代碼的任何地方訪問和使用它們。這就像蜘蛛人自由地在城市中穿梭一樣!

私有存取修飾詞

現在,讓我們來談談private。這就像你在樹屋裡有一本只有你能看的秘密日記。在TypeScript中,private成員只能在同一個類內訪問。

讓我們更新我們的Superhero類:

class Superhero {
public name: string;
private secretIdentity: string;

constructor(name: string, secretIdentity: string) {
this.name = name;
this.secretIdentity = secretIdentity;
}

private changeClothes() {
console.log("在電話亭快速換衣!");
}

public goOnMission() {
this.changeClothes();
console.log(`${this.name} 準備行動!`);
}
}

const superman = new Superhero("超人", "克拉克·肯特");
console.log(superman.name); // 輸出:超人
// console.log(superman.secretIdentity); // 錯誤!secretIdentity是私有的
// superman.changeClothes(); // 錯誤!changeClothes()是私有的
superman.goOnMission(); // 這個可以!輸出:在電話亭快速換衣!超人 準備行動!

看見我們不能直接訪問secretIdentity或調用changeClothes()了嗎?這就是private的力量!它保護了超人的秘密。

受保護存取修飾詞

最後但同樣重要的是,我們有protected。將這個想像成特殊的樹屋規則,適用於你和你的兄弟姐妹,但不適用於鄰居小孩。在TypeScript中,protected成員在類本身及其子類中可訪問。

讓我們創建一個超級英雄家族:

class Superhero {
public name: string;
protected superpower: string;

constructor(name: string, superpower: string) {
this.name = name;
this.superpower = superpower;
}

protected useSuperpowerInternal() {
console.log(`內部使用 ${this.superpower}`);
}
}

class Sidekick extends Superhero {
public useSuperheroPower() {
console.log(`${this.name} 借用力量:${this.superpower}`);
this.useSuperpowerInternal();
}
}

const batman = new Superhero("蝙蝠俠", "裝備");
const robin = new Sidekick("羅賓", "特技");

// console.log(batman.superpower); // 錯誤!superpower是受保護的
// batman.useSuperpowerInternal(); // 錯誤!useSuperpowerInternal()是受保護的

robin.useSuperheroPower(); // 這個可以!輸出:羅賓 借用力量:特技 使用特技內部

在這裡,Sidekick可以訪問Superheroprotected成員,但我們不能直接從類外部訪問它們。

總結

這就是了,我的編程學徒們!我們一起探索了TypeScript存取修飾詞的秘密世界。記住:

  1. public是給大家的(就像公共公園)
  2. private只是給類本身的(就像你的個人日記)
  3. protected是給類及其子類的(就像家族秘密)

明智地使用這些修飾詞將幫助你創建有安全性、有組織且可維護的代碼。這就像成為編程世界的超級英雄一樣——你知道何時分享你的力量,何時將其保密!

當你練習這些概念時,想像你正在設計自己的超級英雄團隊。誰應該知道什麼?你如何平衡團隊合作和保密身份?這就是編程的樂趣——你可以做出這些令人興奮的決定!

繼續編碼,持續學習,並記住:能力越大,責任越大……而且還有真的很酷的TypeScript類!??‍♂️?‍♀️

Credits: Image by storyset