자바스크립트에서 배열은 Array
클래스의 인스턴스이며 생성자를 통해 선언할 수 있다.
타입스크립트에서 타입[]
과 같은 형태로 단축 구문을 통해 배열을 선언할 수 있다.
자바스크립트에서 배열은 객체이며, Array
클래스에는 배열을 사용하는 데 필요한 여러 가지 메서드를 제공한다.
person.ts
export default class Person {
static numberOfPerson: number = 0;
constructor(
private name: string,
private age: number,
private etc?: boolean
) {
Person.numberOfPerson++;
}
printInfo(): void {
console.log(`Person name: ${this.name}`);
console.log(`Person age: ${this.age}`);
console.log(`Person etc: ${this.etc}`);
}
static printNumberOfPerson() {
console.log(`The Number Of Person Object: ${this.numberOfPerson}`);
}
}
type MakePerson = (arg0: string, arg1: number, arg2?: boolean) => Person;
export const makePerson: MakePerson = (name: string, age: number, etc: boolean = false): Person => {
return new Person(name, age, etc);
}
index.ts
import Person, {makePerson} from "./person";
const person = makePerson('Jinwon', 24);
person.printInfo();
const numbers: number[] = [1, 2, 3];
const strings: string[] = ['Jinwon', 'haena', 'jongwan'];
const people: Person[] = [
makePerson('test', 24, true),
makePerson('test2', 29)
];
console.log(Array.isArray(people));
실행 결과
EXNext 자바스크립트와 타입스크립트는 for
문을 좀 더 쉽게 사용하도록 for...in
문을 제공한다.
for...in
문은 객체를 대상으로 사용하며, 배열을 사용할 시 각 인덱스에 접근할 수 있다.for...in
문은 배열이 아닌 객체를 대상으로 할 때는 속성을 대상으로 순회한다.index.ts
import Person, {makePerson} from "./person";
const person = makePerson('Jinwon', 24);
person.printInfo();
const numbers: number[] = [1, 2, 3];
const strings: string[] = ['Jinwon', 'haena', 'jongwan'];
const people: Person[] = [
makePerson('test', 24, true),
makePerson('test2', 29)
];
console.log(Array.isArray(people));
**for (const index in numbers) {
console.log(`[${index}]: ${numbers[index]}`);
}
for (const property in person) {
console.log(`property: ${property}`);
// @ts-ignore
console.log(`-> ${person[property]}`);
}**
for...in
문과는 사용법이 다른 for...of
문도 제공된다.
for...of
문은 배열의 아이템 값을 대상으로 순회한다.import Person, {makePerson} from "./person";
const person = makePerson('Jinwon', 24);
person.printInfo();
const numbers: number[] = [1, 2, 3];
const strings: string[] = ['Jinwon', 'haena', 'jongwan'];
const people: Person[] = [
makePerson('test', 24, true),
makePerson('test2', 29)
];
console.log(Array.isArray(people));
for (const index in numbers) {
console.log(`[${index}]: ${numbers[index]}`);
}
for (const property in person) {
console.log(`property: ${property}`);
// @ts-ignore
console.log(`-> ${person[property]}`);
}
for (const person of people) {
person.printInfo();
}
실행 결과
타입스크립트는 readonly
키워드를 제공한다.
readonly
타입으로 선언된 매개 변수 값을 변경하는 시도가 있다면 문제가 있는 코드라고 알려줘서 불순 함수가 되지 않게 방지한다.let
이나 const
키워드 없이 선언하기 때문에 const
와 같은 효과를 주려면 readonly
가 필요하다.private
로 선언했음에도 불구하고,
person.name
이 아닌 person[
name] = ‘test’
와 같이 접근하면 값이 바뀐다.
이런 경우를 방지하기 위함이다.index.ts
export default class Person {
static numberOfPerson: number = 0;
constructor(
**private readonly name: string,
private readonly age: number,
private readonly etc: boolean,**
) {
Person.numberOfPerson++;
}
...
}