자바스크립트는 동적 타입(Dynamic type) 언어 이기에 변수의 타입 지정없이 유연하게 적용이 된다.
var test = '12'/'2'
console.log(test) --->문자열이 아닌 숫자로 적용되어 6이 나옴
**런타임에러의 경우
let text = 'hello';
console.log(text.chartAt(0));
//결과 : h
text = '8' / '2';
console.log(text.chartAt(0));
//결과 : 런타임에러 ..
도중에 타입이 바뀌어 버리면 런타임 에러가 나오게 된다.
많은 양의 코드에서는 바뀔 여지가 있기에 그 위험을 타입스크립트라는 정적 타입으로 없애준다.
출처 : https://react.vlpt.us/using-typescript/01-practice.html
npm install -g typescript
디렉토리 안 설치tsc --init
쓰면 자동 생성)tsc
없이 dist 폴더를 생성하여 js 파일을 담음)npm install ts-node
ts 를 따로 컴파일하지 않아도 실행해서 console.log값을 볼 수 있음 => 실행방법: yarn run ts-node ./src/practice.ts
<= ts 폴더이름{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"outDir": "./dist"
}
}
*.ts
확장자 사용const message: string = 'hello world';
console.log(message);
해당 프로젝트 디렉토리에 위치한 터미널에서 yarn run tsc
명령어 입력하면 practice.js
파일이 생성된다
js파일에는 우리가 ts파일에 명시한 값의 타입은 컴파일되는 과정에서 모두 사라지게 된다.
##예시
let count = 0;
count += 1
const done: boolean = true;
let mightBeUndefined: string | undefined = undefined;
// string 일수도 있고 undefined 일수도 있음
let nullableNumber: number | null = null;
// number 일수도 있고 null 일수도 있음
type Lala = string | number;
//string일수도 있고 number일 수도 있음
let min: Lala = 123; //타입을 넣을 수도 있음
const numbers: number[] = [1, 2, 3] //숫자배열일 때
numbers.push(1)
타입지정 👇
type Result = "pass" | "fail"
function verify(result: Result) {
if (result === "pass") {
console.log("Passed")
} else {
console.log("Failed")
}
}
💣 에러 발생시 컴파일이 되지 않음
function sum(x: number, y: number): number {
return x + y;
}
sum(1, 2);
function sumArray(numbers: number[]): number {
return numbers.reduce((acc, current)
=> acc + current, 0);
}
const total = sumArray([1, 2, 3, 4, 5]);
함수에 아무것도 반환하지 않아야 한다면 반환 타입을 void
로 설정
function returnNothing(): void {
console.log('I am just saying hello world');
}