리터럴 타입은 특정 값을 나타내는 타입으로 해당 값이 정확하게 일치해야 함
let status: 'success' | 'error';
status = 'success'; // success
status = 'err'; // error
let speed: 10 | 20 | 30;
speed = 20; // success
speed = 15; // error
let isTrue: true;
isTrue = true; // success
isTrue = false; // error
let person: { name: 'jini', age: 24 };
person: { name: 'jini', age: 24 }; // success
person: { name: 'jin', age: 26 }; // error
type CardinalDirection = 'North' | 'East' | 'South' | 'West';
let direction: CardinalDirection;
direction = 'North'; // success
direction = 'Northeast'; // error
제한된 타입을 동시에 지정하고 싶은 경우
let anyVal: number | string;
anyVal 변수는 number나 string 타입 중 아무 타입의 값이 올 수 있음
type numOrStr = number | string;
let val: numOrStr = 100;
let numbers: number[] = [1, 2, 3, 4, 5];
let fruits: string[] = ['apple', 'banana', 'orange'];
let mixedArray : (number | string)[] = [1, 'two', 3, 'four'];
let readOnlyArray: ReadonlyArray<number> = [1, 2, 3];
for(let i = 0; i < array.length; i++){
console.log(array[i]);
}
let array1 = [1, 2];
let array2 = [3, 4];
let array = [...array1, ...array2];
console.log(array); // [1, 2, 3, 4]
길이가 고정적이며 각 요소의 타입이 정해져 있음
let greeting: [number, string, boolean] = [1, 'hello', true];
class Student{
name: string;
age: number;
printStd = (): void => {
console.log(`name : ${this.name}, age : ${this.age}`);
}
}
let std1 = new Student();
std1.empName = 'jini';
std1.age = 24;
std1.printStd(); // name : jini, age : 24
class Student{
...
constructor(name: string, age: number){
this.name = name;
this.age = age;
...
}
let std1 = new Student('jini', 24);
std1.printStd(); // name : jini, age : 24
만약 매개변수에 ?를 붙여주면 선택적 매개변수
ex. constructor(name: string, age?: number)
public(default) : 누구나 접근 가능
private : 내 클래스 내부에서만 접근 가능하고, 외부에서는 절대 접근 불가능
protected : 상속 관계에 있을 때 상속 받은 자식 클래스에서 접근 가능, 그 외에는 접근 불가능
class Student{
private _name: string;
private _age: number;
...
}
let std1 = new Student('jini', 24);
std1.name = 'jin'; // error
private 변수명 앞에 _를 붙여야 함
class Student{
constructor(
private _name: string,
private _age: number
){
}
get _name(){
return this._name;
}
set _name(val: string){
this._name = val;
}