2022. 10. 13. 18:11ㆍTypeScript
Public Private
public 키워드 같은 경우 굳이 붙이지 않아도 자동으로 붙어 있습니다. public 키워드가 붙을 경우 class의 자식들도 사용, 수정이 가능합니다. private 키워드는 반대로 클래스 내부에서만 변경이 가능하고 외부에서는 변경이 불가능합니다. 그래서 아래와 같이 따로 함수 메소드를 만들어서 값을 변경할 수 있도록 만들어야 합니다.
Class User {
public name = 'chaeyoung';
private familyName = 'IM' // private은 클래스 안에서만 변경 가능!!
constructor(item) {
this.name = item + this.familyName;
}
changeFamilyName(name) {
this.familyName = name;
}
}
Protected Static
private 키워드를 사용했는데 extend 하는 클래스에서 사용하거나 변경하고 싶을 때 protected를 사용하면 됩니다. static은 자식들에게 복사가 되지 않아서 사용할 수 없습니다.
class User {
protected name = 'chaeyoung';
static familyName = 'IM' // private은 클래스 안에서만 변경 가능!!
constructor(item) {
this.name = item + this.familyName;
}
}
class NewUser extends User {
test() {
this.name = "protected can revise"
// static한 familyName안 없어요!
}
}
타입스크립트의 ts 파일에 선한 변수들은 아무런 조치를 안 한다면 글로벌 모듈마다 모든 ts에서 사용이 가능하다! 그렇기 때문에 import, export를 사용해서 선언한 변수들이 로컬에서만 사용 가능하게 처리를 할 수 있다!
Pick
type, class 를 만들고 특정 부분만 사용하고 싶을 때 pick을 사용하면 됩니다! Omit은 반대로 선택한 필드 값을 제외하고 나머지를 불러오게 됩니다!
type User {
id: string,
password: number,
description: string
}
type NameTag = Pick<User, "name" >;
const chaeyoung: User = {
name: '채영',
password: 1234,
description: '핫도비!'
};
const name_tag: NameTag = {
name: chaeyoung.name
}
console.log(name_tag) // 출력 :: { name: '채영' }
Immutable
as const, readonly를 통해서 지정한 타입 값 외에 다른 값이 오는 것을 방지할 수 있습니다. readonly 같은 경우 지정된 키값에만 해당 되고 하위 항목이 있다면 mutable하게 변할 수 있습니다. Array 같은 경우 직접 변경은 불가능 하나 push를 통한 엘리먼트 추가는 가능합니다!
What if falsy value come?!
null, undefined 와 같은 값이 유니온 타입으로 올 수 있다면 다른 곳에서 타입을 사용할 때 타입에러를 리턴할 수 있다. 그럴 땐 아래와 같이 활용하면 된다.
type User {
id: string,
password: number,
description?: string
}
const user = {
name: '채영',
password: 1234,
description: '내가 좀 핫하지 핫도비!'
}
const instruction: string = user.description // undefined 가 올 수 있기 때문에
// user.description! 또는 user.description as string
typeof
user라는 변수를 할당하고 비슷한 형태의 user2라는 변수를 만들고 싶을 때 굳이 타입이나 클래스를 명세하면서 만들 필요 없이 type User = typeof user; 라고 타입을 지정하게 되면 user 변수가 가지고 있는 형태로 타입이 생성되어 다른 곳에도 사용할 수 있다.
Record
반복되는 key, value 형태의 타입에 대해서는 record를 사용할 수 있습니다!
*/
type AgesType = {
[name: string]: number;
}; 이런식으로 하거나
*/
type NamesType = '아이유' | '유승호' | '핫도비';
type AgesType = Record<NamesType, number>;
const ages: AgesType = {
'아이유' : 29,
'유승호' : 30,
'핫도비' : 7
};
'TypeScript' 카테고리의 다른 글
함수를 사용하면 한 번 쯤 휙! 봤으면 해 (0) | 2022.10.12 |
---|---|
빠르게 TypeScript 시작하기 (0) | 2021.01.14 |
JavaScript에서 TypeScript로 기초 (0) | 2021.01.04 |