在TypeScript中,get和set访问器允许我们有效地封装对象中的属性,通过这种方式可以在读取或写入属性时执行额外的逻辑。get访问器用于定义如何读取属性值,而set访问器则定义如何设置属性值。下面是一个使用get和set访问器的例子:
typescriptclass Person { private _firstName: string; private _lastName: string; constructor(firstName: string, lastName: string) { this._firstName = firstName; this._lastName = lastName; } // 使用 get 访问器来读取 fullName get fullName(): string { return `${this._firstName} ${this._lastName}`; } // 使用 set 访问器来设置 firstName 和 lastName set fullName(name: string) { const parts = name.split(' '); if (parts.length !== 2) { throw new Error('请输入一个完整的名字,例如:John Doe'); } this._firstName = parts[0]; this._lastName = parts[1]; } } let person = new Person('John', 'Doe'); // 通过 get 访问器获取 fullName console.log(person.fullName); // 输出: John Doe // 通过 set 访问器修改 fullName person.fullName = 'Jane Smith'; // 再次通过 get 访问器获取修改后的 fullName console.log(person.fullName); // 输出: Jane Smith
在上述例子中,Person 类有两个私有属性 _firstName 和 _lastName。为了能够控制对这些属性的访问,我们定义了一个 fullName 属性,它有一个 get 访问器和一个 set 访问器。
get fullName()方法用于在需要时构造并返回一个完整的名字,即_firstName和_lastName的组合。set fullName(name: string)方法允许我们通过一个字符串来设置_firstName和_lastName。如果传入的字符串不是两个部分组成,则会抛出错误。
这样,我们就可以用面向对象的方式,封装属性的具体实现细节,同时通过访问器提供简单的接口供外部代码使用。这样做的好处是可以在设置和获取属性时添加验证逻辑或其他附加操作,而不必暴露类的内部结构。
2024年6月29日 12:07 回复