TS를 배우려면 JS를 알고 있어야 한다.
아마 니는 TS를 배우면서 JS를 다시 또 뒤적거리겠지...
JS의 문제점을 보안하기 위해 만들어진 언어라고 알고 있었는데 JS의 상위 언어란다 그니까 TS밑에 JS가 있는것.
(어떤 것이 오류인지와 어떤 것이 연산 되는 값에 기인하지 않음을 정하는 것)
console.log(4/[]);
JS > NaN // 일단 JS에서 구문은 맞음 그래서 낫어넘버~
TS > Error! // 타입 틀리면 오류냄!
The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
// 왜냐면 타입이 잘못사용 되었기 때문에~
런타임이란?
컴퓨터 프로그램이 실행되고 있는 동안의 동작, 프로그래밍 언어가 구동되는 환경, 어떤 프로그래밍 언어가 동작할 수 있는 프로그램 예를 들면 JS에서는 Node가 런타임
TS는 컴파일 -타임 타입 검사자가 있는 JS의 런타임이다~
interface
를 사용한다.JS | TS |
---|---|
const user = { | interface User = { |
name : 'jin', | name: string, |
id: 0, | id: number, |
} | } |
명시적: 내용이나 뜻을 분명하게 드러내 보이는 것
변수 선언 뒤에 :TypeName
구문을 사용해 JS 객체가 새로운 interface 형태를 띄고 있다.
해당 인터페이스에 맞지 않으면 경고를 준다.
인터페이스는 클래스도 선언이 가능하다!
interface User {
name: string,
id: number
}
class UserAccount {
name: string,
id: number,
constructor (name: string, id: number) {
this.name = name;
this.id = id;
}
}
const user: User = new UserAccount('jin', 1);
interface User {
name: string,
id: number,
}
function getUser(): User{
//...
}
function delUser(user: User) {
//...
}
bigint
BigInt
는Number
원시 값이 안정적으로 나타낼 수 있는 최대치인253 - 1
보다 큰 정수를 표현할 수 있는 내장 객체.
any
무엇이든 허용합니다.
unknown
이 타입을 사용하는 사람이 타입이 무엇인지 선언했는가를 확인하십시오.
never
이 타입은 발생될 수 없습니다.
void
undefined
를 리턴하거나 리턴 값이 없는 함수.
!! 타입을 구축할때 interface를 우선적으로 쓰고 그 다음 특정 기능이 필요할 때 type를 사용한다.