<aside>
💡 npm install -g typescript
</aside>
<aside>
💡 tsc --init
</aside>
<aside> 💡
tsc : ts 파일을 컴파일해서 index.js.map으로 만듬
</aside>
<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
클래스 프로퍼티 생성 의문 찾아낸 사이트