typescript 한국어 공식문서

TypeScript 한글 문서

설치법

<aside> 💡 npm install -g typescript

</aside>

typescript 프로젝트를 initialize

<aside> 💡 tsc --init

</aside>

<aside> 💡

tsc : ts 파일을 컴파일해서 index.js.map으로 만듬

</aside>

typescript import

<aside> 💡 import * as test from "test.js";

</aside>

비교를 통해 알아보자

let num = 1000;

function change(num) {
	return num + "해보자!!";
}

change(num);
let num : number = 1000;

function change(num : number): string{
	return num + "해보자!!";
}

change(num);

여기서 num 자리에 타입이 number가 아닌 것을 넣게되면 오류 발생 

기본 타이핑

// 원시타입 
const num: number = 123;
const str: string = 'string';
const tru: boolean = true;

// 이런 식으로 여러 타입이 들어갈걸 예상해서 변수를 선언한 경우 
let userCompanyInfo: Dentist | Technician 
// 사용 과정에서는 이런 식으로 타입 추론을 해줘야지만 코드상에서 인지가 가능하다
userCompanyInfo instanceof Dentist or userCompanyInfo instanceof Technician

//원시값 
const nul: null = null;
const undef: undefined = undefined;
// 기본적을 typescript는 원시타입/원시값인 string, number, boolean, null, undefined를 지원한다

//배열은 타입이름[]이나 Array<타입이름>으로 나타낸다.
const numberArray: number[] = [1,2,3];
const stringArray: Array<string> = ['d','o','g','e'];

// 원시타입
const num: any = 123;
const str: any = 'string';
const tru: any = true;
// 원시값
const nul: any = null;
const undef: any = undefined;
// any라는 타입은 모든값이 할당될 수 있는 타입 (모든 타입을 허용하기에 typescript를 쓰는
// 이점이 없다 그래서 지양함)

const onlyHi: 'hi' = 'hi';
const only123: 123 = 123;
//number리터럴, string리터럴을 직접 타입으로 줄 수도 있다.

// 함수
function test(name: string, money:number) : number {
// ex)) let result : string = test('jeon',111); 이럼 바로 에러남 왜냐 함수의 
// 리턴 값은 number로 지정했는데 result변수는 타입을 string으로 받고있기 때문  
}
function test(name: string, money:number ='123') : number {
// 이렇게 인자 기본값을 지정할 수 있다.
// 기본값을 지정하는 인자는 마지막 인자부터 채워져야 한다.
// ex))  let result : number = test('jeon',111); 또는 test('jeon');으로 가능 
}

// 옵션 인자 
// 옵션인자도 함수를 선언할 때 마지막 인자부터 채워야 함 
// 옵션인자가 전달되지 않았을 때 처리할 로직도 만들어줘야 함 
function test(name: string, money?:number) : number {
	if(money) {

	} else {

	}
}

유니언 (Union) 타입
유니언 타입이 위에서 설명했던 여러 타입을 조합한 타입입니다.
다음 코드에서 getLength 함수의 인자인 obj는 string 또는 string 배열 타입을 가질 수 있습니다.

function getLength(obj: string | string[]) {
  return obj.length;
}

// 클래스
// typescript에서는 클래스에 대한 정의를 메모리에 청사진처럼 만들어두고 인스턴스르 생성할 때마다
// 불러 와서 사용함 
// javascript와 달리 class, extends키워드를 지원함 -> 하지만 javascript로 변환하면 결국 
// 프로토타입을 활용한 상속이 됨 
class Person {
	name : string;
	age : number;
	
	constructor(name : string, age: number) {
		this.name = name;
		this.age = age;
	}
}

var p = new Person('jeon',1);
이 밖에 접근 제한자는 공식문서를 보자 훨씬 더 이해하기 쉽다.

// getter ,setter 메소드 생성 법 
class Person {
	
	constructor(public name : string, public age: number, private loc: string) {
	}
	get loc() : string {
		return this.loc;
	}
	set loc(value : string) : string {
		return this.loc = value;
	}
}

이걸 하면서 아니 얘는 왜 클래스 프로퍼티 생성을 안하지 싶었는데 
접근 제한자가 사용된 생성자 파라미터는 암묵적으로 클래스 프로퍼티로 선언되고 생성자 내부에서 
별도의 초기화가 없어도 암묵적으로 초기화가 수행한다는 걸 찾아냈다 ㅎㅎ 

TypeScript - Class | PoiemaWeb

클래스 프로퍼티 생성 의문 찾아낸 사이트

여기도 정리 잘함

TypeScript 문법 정리