타입스크립트에서 네임스페이스의 활용
예제로 알아본다
// animal.ts 파일
export namespace Animal {
export interface AnimalType {
name: string;
age: number;
color: string;
sound: string;
}
export class Animal {
constructor(public animal: AnimalType) {}
getAnimalName() {
return `This animal's name is ${this.animal.name}.`;
}
getAnimalAge() {
return `This animal is ${this.animal.age} years old.`;
}
getAnimalColor() {
return `This animal's color is ${this.animal.color}.`;
}
makeSound() {
return `The ${this.animal.name} makes the sound ${this.animal.sound}.`;
}
}
}
위 예제를 보면 애니멀이라는 네임스페이스 안에 애니멀타입 인터페이스와 애니멀 클래스를 정의하고 있다. 애니멀 클래스는 애니멀타입 인터페이스를 인자로 받아 생성자에서 초기화 되고, 동물의 이름,, 나이 색상 , 소리등을 출력하는 각종 메소드를 구현한다.
이제 위의 예제 네임스페이스를 다른 파일에서 사용해보자
// app.ts 파일
import { Animal } from './animal';
const cat = new Animal.Animal({
name: 'cat',
age: 2,
color: 'brown',
sound: 'meow',
});
console.log(cat.getAnimalName());
console.log(cat.getAnimalAge());
console.log(cat.getAnimalColor());
console.log(cat.makeSound());
위 예제에서는 animal.ts파일에서 익스포트한 애니멀 네임스페이스를 임포트하여 Animal.Animal 클래스를 사용하고 있다. 클래스의 인스턴스를 생성하여 동물의 이름, 나이 색상, 소리등을 출력하는 각종 메소드를 호출한다.