요새 채용공고에 보면 React와 TypeScript를 자주 보고 있다.
쉽게 풀어보자면..
오타 교정, 타입 체크 ( 문자인지 숫자인지 ~기타 등등)
자바스크립트가 다이나믹타이핑을 지원하는 걸 막아주는 언어라고 해야 할까?
공항 검색대처럼 굉장히 엄격한 언어라고 할 수 있다그럼 다이나믹 타이핑은 뭘까?
변수를 지정할 때 데이터 타입을 명시하지 않아도 컴퓨터가 알아서 해석하도록 해준다고 쓰여있다.
사람처럼 비유하자면 "거기에 있는 그거 좀 줘봐" 가 아닐까?
변수를 쓸 때
var name = "kim";
에서 타입을 지정해 주면 된다.
var name : string = "kim";
이런 식으로 사용할 수 있는 방법이 많다.
let name : string[] = ["kim","lee"...]
let name : string | number = 4885;
let age : { 나이 : number } = { 나이 : number };
type nameType = string | number;
let name : nameType = 'lee'
let user : [string,number] = ['kim',10]
//함수를 사용할때는 타입을 미리 체크해줘야한다
function 함수( a : number) {
if(typeof x === 'number'){
return a * 2
}
// object 타입
type userType={
name? : string, // name 속성이 string거나 name이 undefined라는 의미이다
age : number
}
let kim : userType = {
name : 'kim',
age : 10
}
//object안에 속성이 전부 같은 속성일때 타입 지정하는것도 있다
let Person : { [key : string] : number } = {
na_E : 10,
kI : 190,
mu_gea : 100
}
//class도 사용가능하다 대신 중괄호안에 변수를 만들어야 사용가능
하지만 꼭 타입을 지정하지 않아도 알아서 타입을 지정해 준다
편하다.. 그래도 나는 주니어_주니어 니까 사용하는 버릇을 만들자
추가로
let name ;
name = 'kim'
일 때 let name : Any 가 된다. 타입 속성을 해제하는 거랑 같은 의미이다
Any와 unknown 타입이 있는데
타입이 지정된 변수 = Any텍스트로 지정된 변수 는 에러가 나지 않지만
타입이 지정된 변수 = unknown로 지정된 변수 는 에러가 난다
function 함수( a : number | string ) {
return a + 1;
}
이런 계산식을 사용하는 함수가 있다고 하자 그렇다면 문자 형식으로 된 숫자가 입력된다면?
어떻게 사용하는 방법들이 있을까?
Narrowing
function 함수( a : number | string ) { if ( typeof a === "number") { // in , instanceof 사용 가능 return a + 1 } else if ( typeof a === "string"){ return a + 1 } else {return 0} }
Assertion
function 함수(a : number | string) { return (a as number) + 1 // a를 number로 인식하게 만듬 하지만 인식만할뿐 임시해결용에 가깝다. }
Assertion은 확실할 때아니면 임시로 에러 해결할 때 사용하고 나머진 Narrowing을 사용해야겠다.