TypeScript中如何在类内部定义接口?
TypeScript类内部声明接口的方法
TypeScript支持在类内部声明接口,这类接口属于类的成员范畴,使用方式和类的其他成员类似,可通过访问修饰符控制其可见范围。
基础用法示例
class AnimalHouse { // 在类内部声明接口 interface Animal { dateOfBirth: any; } greeting(pa: Animal) { console.log(pa.dateOfBirth); } } // 外部需通过类名来引用该内部接口 const house = new AnimalHouse(); const cat: AnimalHouse.Animal = { dateOfBirth: '2023-05-10' }; house.greeting(cat);
访问修饰符控制可见性
可以为内部接口添加private或protected修饰符,限制其访问范围:
- 私有接口:仅能在类内部使用,外部无法通过类名访问
class AnimalHouse { private interface PrivateAnimal { name: string; } private showAnimalName(animal: PrivateAnimal) { console.log(animal.name); } } // 以下代码会报错,因为PrivateAnimal是私有内部接口 // const dog: AnimalHouse.PrivateAnimal = { name: '旺财' };
- 受保护接口:可在类内部及子类中访问,外部无法直接使用
class AnimalHouse { protected interface ProtectedAnimal { breed: string; } protected logBreed(animal: ProtectedAnimal) { console.log(animal.breed); } } class DogHouse extends AnimalHouse { showDogBreed(dog: ProtectedAnimal) { this.logBreed(dog); } }
内容的提问来源于stack exchange,提问作者Ethel Stample
相关产品推荐
相关产品推荐

