在構(gòu)造函數(shù)的參數(shù)上使用public等同于創(chuàng)建了同名的成員變量
class Student {
fullName: string;
constructor(public firstName, public middleInitial, public lastName) {
this.fullName = firstName + " " + middleInitial + " " + lastName;
}
}
interface Person {
firstName: string;
lastName: string;
}
function greeter(person : Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let user = new Student("Jane", "M.", "User");
document.body.innerHTML = greeter(user);
輸出Hello, Jane User
當(dāng)成員被標(biāo)記成private時,它就不能在聲明它的類的外部訪問
我們不能在Person類外使用name,但是我們?nèi)匀豢梢酝ㄟ^Employee類的示例方法訪問耸三,因為Employee是由Person派生而來構(gòu)造函數(shù)也可以被標(biāo)記成 protected。 這意味著這個類不能在包含它的類外被實例化虽缕,但是能被繼承。
class Person{
protected name: string;
constructor(name: string){
this.name = name;
}
}
class Employee extends Person{
private department: string;
constructor(name: string, department: string){
super(name)
this.department = department;
}
public getElevatorPitch() {
return `Hello, my name is ${this.name} and I work in ${this.department}.`;
}
}
let howard = new Employee("Howard", "Sales");
console.log(howard.getElevatorPitch()); //Hello, my name is Howard and I work
console.log(howard.department); // Sales 錯誤
console.log(howard.name); // Howard 錯誤
safari瀏覽器可以正常打印失暂,但是代碼會提示錯誤
class TestClass {
constructor(name: string, private address: string, public city){
testMethod(){
console.log(this.name)// Compiler error: property 'name' does not exist on type 'TestClass'.
console.log(this.address);
console.log(this.city);
}
}
}
const testClass = new TestClass('Johnson', '8 gaoke road', 'NanNing');
testClass.testMethod();
console.log(testClass.name); // Compiler error: property 'name' does not exist on type 'TestClass'.
console.log(testClass.address); // Compiler error: 'address' is private and only accessible within class 'TestClass'.
console.log(testClass.city) // NanNing
版權(quán)聲明:本文為CSDN博主「·塵氨顺瑁」的原創(chuàng)文章鳄虱,遵循CC 4.0 BY-SA版權(quán)協(xié)議弟塞,轉(zhuǎn)載請附上原文出處鏈接及本聲明凭峡。
原文鏈接:https://blog.csdn.net/weixin_54163765/article/details/117356187