- Type
- number
ex) let age:number = 31; - string
ex) let name:string = "An"; - boolean
ex) let isMan:boolean = true; - Array<type> / type[] : type에는 적용할 type 입력
ex) let score:number[] = [100, 90, 80];
ex) let score:Array<number> = [100, 90, 80]; - [type, type] : Tuple로 사용, type에는 적용할 type 입력
ex)
let an:[string, number];
an = ["an", 31]; // 해당 type 순서가 일치해야하며, 해당 type에 있는 메서드만 사용 가능 - void : 반환하지 않는 함수에 사용
ex)
function doWork():void{
console.log("working");
} - never : Error를 받거나 무한루프에 사용
ex)
function showError():never{
throw new Error();
} - enum : 자바스크립트에는 없지만 타입스크립트에서는 사용 가능하며, 선언도 가능
ex)
enum Color {
Red,
Blue,
Black,
} // 할당하지 않으면 처음(Red) 값은 0이며, 문자도 할당가능
console.log(Color["Red"]) // 0 출력
let myColor:Color;
myColor = Color.Red; // 특정 값만 입력할 수 있게 강제할 수 있음 - object : interface를 작성해야 함 (아래에서 다시 다룰 예정)
ex)
let user:object;
user = {
name : "an",
age : 31
} - null
ex) let n:null = null; - undefined
ex) let und:undefined = undefined;
- Interface
object 같은 경우에는 안에 type이 지정되지 않아서 Error가 발생한다.
그것을 막기 위해 interface를 통해 미리 type을 지정해준다.
- 기본 예시
ex)
type Grade = 'A' | 'B' | 'C'; // type을 통해 제한을 둘 수 있다.
interface User {
name : string;
age : number;
gender? : string; // 있어도 되고 없어도 될 때는 ?를 통해 optional로 사용 가능
readonly birthYear : number; // readonly로 사용 가능, 생성할 때만 할당 가능
[itemIndex:number] : boolean; // 비슷한 형태의 property 생성 가능 (itemIndex는 의미 없음 그냥 변수 이름)
[score:number] : Grade;
}
let user:User;
user = {
name : "an",
age : 31,
birthYear : 1992, // 수정 불가
1 : true,
2 : false, // [itemIndex:number] : boolean에 의해 이런 식으로 생성 가능
100 : 'A' // Grade에 있는 것 외에 것을 입력하면 오류 발생
}
- 함수 예시
ex.1)
interface Add {
(num1:number, num2:number):number;
}
// x와 y라고 설정해놔도 num1, num2로 설정 됨
const add : Add = function(x, y){
return x + y ;
}
add(10, 21); // 31
ex.2)
interface IsAdult{
(age:number):boolean;
}
const an:IsAdult = (age) => {
return age > 19;
}
an(31) // true
- 클래스 예시
interface Human{
name: string;
age: number;
move() ; void;
}
interface Tool{
toolName: string;
count ; number;
}
// extends를 통해 확장 (여러 개 가능) 가능하며, class 생성 시 확장 interface의 property도 모두 설정해줘야 함
interface Man extends Humam, Tool{
strong: number;
stop(); void;
}
// implemetns를 통해 class에 interface 사용
class An implements Human {
name;
constructor(getName:string){ // constructor를 통해 생성자 역할 가능
this.name = getName;
}
age : 31;
move(){
console.log("move move");
}
}
const man = new An("AnSolomon");
console.log(man.name); // "AnSolomon"
man.move(); // move move
'개발에 도움이 되는 > TypeScript' 카테고리의 다른 글
TypeScript 기본 (Utility Type) (0) | 2022.05.02 |
---|---|
TypeScript 기본 (Generic) (0) | 2022.04.29 |
TypeScript 기본 (Literal, Union / Intersection Type) (0) | 2022.04.26 |
TypeScript 기본 (Function) (0) | 2022.04.13 |
TypeScript 개념 및 설치 방법 (React) (0) | 2022.04.06 |