Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 모던자바스크립트
- node.js 설치
- Python
- 거북이 대포 게임
- intellij
- 리액트
- 인프런
- 타자 게임 만들기
- 모두의 파이썬
- 계산맞추기 게임
- JS 개념
- Do it 자바스크립트 + 제이쿼리 입문
- props
- spring-boot
- Colaboratory 글자 깨짐
- 웹 게임을 만들며 배우는 리액트
- 자바스크립트
- ReactDOM.render is no longer supported in React 18. Use createRoot instead
- 노드에 리액트 추가하기
- react
- 따라하며 배우는 노드 리액트 기본 강의
- Spring-Framework
- googleColaboratory
- DB Browser
- vs code 내 node
- react오류
- intllij 내 Bean을 찾지 못해서 발생하는 오류
- node.js로 로그인하기
- Concurrently
- You are importing createRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client"
Archives
- Today
- Total
프로그래밍 삽질 중
TypeScript 개념 - 3 본문
* 출처 : https://github.com/ZeroCho/ts-all-in-one
* 클래스는 interface를 따름
- public : 어느 곳에서나 가능
- private : 해당 클래스 내에서만 사용 가능
- protected : 해당 클래스 내에서만 가능, 상속한 경우에서도 사용 가능
//추상
interface A { //JS로 변환 시 사라짐
readonly a: string;
b: string;
}
//구현
//[자바처럼 쓸 수 있음]
class B implements A { //인터페이스를 클래스로 구현
private a: string; //객체 지향에서 쓰는 것(클래스 B안에서만 할 수 있음)
protected b: string; //객체 지향에서 쓰는 것(클래스 B안에서만 가능, 상속한 경우는 쓸 수 있음)
}
class C extends B {
method() {
console.log(this.a); //오류
console.log(this.b); //접근 가능
}
}
new C().a;
abstract class X { //반드시 구현해야 함
abstract work(user: User): boolean;
}
class Y extends X {
work(user: User): boolean {
return true;
}
* 옵셔널
- 접근하는 객체의 프로퍼티가 null 또는 undefined일 수 있는 optional property인 경우 if문을 사용하지 않고 넘어가게 함
- 객체가 null이나 undefined이면 undefined를 리턴하고 그렇지 않은 경우 데이터 값을 리턴함
* 참고 : https://lakelouise.tistory.com/192
//전부 다 받고 싶은 경우 function abc(...args: number[]) {}
function abc(a: number, b?: number, c: number?) {} //개수가 정해진 채 몇 개만 옵셔널로 받고 싶음
abc(1)
abc(1, 2)
abc(1, 2, 3)
let obj: { a: string, b?: string } = { a: 'hello', b: 'world' } //b는 없어도 상관 없음
obj = { a: 'hello'}
* 제네릭
- 재사용이 높은 컴포넌트를 만들 때 자주 활용되는 특징을 지님
- 한가지 타입보다 여러 타입에서 동작하는 컴포넌트를 생성 시 사용
- 타입을 변수처럼 만듦
//아래의 문제를 해결하기 위해 나온 것
//문제
function add(x: string, y: string): string;
function add(x: number, y: number): number;
function add(x,y) {
return x + y
}
add(1, 2) //문제 없음
add('1', '2') //문제 없음
add('1', 2) //문제 있음
add('2', 1) //문제 있음
//제네릭 사용하는 경우
//T는 타입이 같으면 모두 다 됨
function add<T>(x: T, y: T): T { return x + y }
add<number>(1, 2);
add(1, 2);
add<string>('1', '2');
add('1', '2');
add(1, '2');
//제네릭 제한, 제네릭 기본값은 extends 사용
function add<T extends number | string>(x: T, y: T): T { return x + y }
add<number>(1, 2);
add(1, 2);
add<string>('1', '2');
add('1', '2');
add(1, '2');
* 기본값을 넣는 경우
//TS 내 화면
const a = (b: {children: 'zerocho'} = {children: 'zerocho'}) => {
return true;
}
//JS 내 화면
const a = (b = { children: 'zerocho' }) => {
return true;
};
* React에서 <T>만 붙일 경우 <div></div>값처럼 인식해서 오류가 남
//오류 해결
const add = <T=unknown>(x: T, y: T) => ({x, y})
const result = add(1, 2)
'과거 프로그래밍 자료들 > Javascript&typescript' 카테고리의 다른 글
[TS] 공변성, 반공변성, 오버로딩 (0) | 2022.09.18 |
---|---|
[TS] forEach, map, filter 제네릭 분석 (0) | 2022.09.16 |
TypeScript 개념 - 2 (0) | 2022.09.16 |
TypeScript 개념 - 1 (0) | 2022.09.15 |
호출스택, 이벤트루프, 태스크큐, 백그라운드 (0) | 2022.09.15 |