타입스크립트는 타입을 지정하는 언어로 타입을 다 지정해놓고 개발을 하게 되면 배포 전 에러를 다 발견할 수 있고 안전하며 요즘은 필수적이다라고 할 수 있다.
- 자바스크립트 : 초기 개발속도가 빠르지만 추후 유지보수 할때 언제 이슈가 터질지 모르는 지뢰밭
- 타입스크립트 : 초기 개발속도는 느리지만 추후 서비스가 배포 되었을 때 유지보수도 안정적이다.
기존에는
const aaa = "문자열입니다"
const bbb = 12345
const ccc = true
이렇게 입력이 됐는데 타입스크립트에서는 무조건 타입을 지정해줘야 하므로
const aaa:string = "문자열입니다"
const bbb:number = 12345
const ccc:boolean = true
이렇게 지정을 해줘야한다.
undefined & null = 타입,값 모두 소문자로만 사용할 수 있고 모든 타입의 서브타입으로 해당한다
number타입을 사용할때 --strictNullChecks 옵션으로 undefined & null 을 사용하지 못한다면 곤란할것이다 그래서
위 사진에 적혀 있듯이 union type을 이용해야 한다.
// let MyName: string = null;
let v: void = undefined; //같은 값으로 넣을 수 있다 void는 타입으로만 가능
let union: string | null = null //이 표기법이 union타입, 합집합의 의미
union = "shin"
object타입
출처 입력
const person1 = {name: "shin", age: 28};
const person2 = Object.create({ name: "shin" , age: 28 }) //union타입
const person2 = Object.create({}) //이런값도 가능
const person2 = Object.create(39); //불가
Error가 뜨는것들을 넣을 수 없게할 때 사용하는게 object 타입이다
let list: number[] = [1,2,3]; //이 방식을 더 많이 사용한다.
let list: Array<number> = [1,2,3]; //jsx, tsx에서 충돌이 날 수 있다.
//위와 같이 2가지의 표현방식이 있다.
let list: number[] = [1,2,3,"4"]; //이렇게 배열을 하고자 할때 오류 해결 방법은
let list: ( number | string )[] = [1,2,3,"4"]; //union타입을 사용하면 된다.
let x: [string,number];
x = ["hello", 28];
//순서와 양식, 길이가 맞아야한다.
길이가 맞아야한다는것은 현재 x 배열의 갯수는 index번호 기준 0,1 까지 밖에 없으므로 2~ 이상의 위치에 값을 할당할 수 없다
어떤것이든 된다라는 타입이지만 의미는 정말로 어떤것이든 들어올수 있는 경우도 있고 아닐수도 있다.
타이핑을 하다보면 귀찮아질수도 있고 어떤 타입인지 잘 모를수도 있지만 무심코 any를 쓰게 되면 전체적인 타입 시스템에 문제가 발생할수도 있습니다.
function returnAny(message): any {
console.log(message)
}
const any1 = returnAny("리턴은 아무거나")
위처럼 any는 인자중 message가 숫자일지 문자일지 가늠할수 없을때만 쓰이는게 맞다.log형식이기 때문
any 타입의 불안정함을 조금이나마 해소할 수 있는 대체자