Top 타입 (any / unknown)모든 타입이 할당 가능한 타입을 말한다. ✔️ any any는 타입스크립트가 해당 값에 대한 할당 가능성 또는 멤버에 대해 타입검사를 수행하지 않도록 명시적으로 지시한다.-> 타입오류는 없지만 런타임 오류 발생 ✔️ unknownunknown은 타입의 값을 훨씬 더 제한적으로 취급한다. 일단, 타입 값의 속성에 직접 접근할 수 없다.어떤 변수 value가 unknown 이라면 value.toUpperCase() 등이 안된다는 말이다.-> 그럼 어떻게 접근해야할까??if (type of value === 'string'){ console.log(value); } 위 코드와 같이 typeof 를 사용하여 내로잉하거나타입 어써션을 통해 값의 타입이 제한된 경우에 해당 ..
type alias vs interface//타입 aliastype Poet1 = { born: number; name: string };//interfaceinterface Poet2 { born: number; name: string;} 두 구문은 거의 같다. type과 차이점인터페이스는 속성증가를 위해 병합(merge) 할 수 있다. -> 재정의가 가능하며, 정의된 interface 모두 병합된다는 것이다. type은 재정의 할 수 없다.interface Poet { born: number;}interface Poet { born: number;}// 위 코드는 아래와 같다.interface Poet { born: number; name: string; } extends (확장..
배열let arrayOfnumber: number[];//배열에 대한 타입 애너테이션은 배열요소타입 다음에 []가 온다 ✔️ noUncheckedIndexedAccess** 주의**타입 스크립트는 모든 배열 멤버에 대한 접근이 해당 배열의 멤버를 반환한다고 가정한다.검색된 배열의 멤버가 존재하는지 의도적으로 확인되지 않는다. const oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];console.log(oneToTen[400].toFixed(2)); 위 코드에서 oneToTen[400]은 undefined가 아니라 number타입의 값으로 간주된다. -> 그렇기에 코드를 실행하면 런타임 에러가 발생한다. 이때 사용하는 것이 noUncheckedIndexAccess 이다.-..
함수 매개변수function add(a, b) { return a + b;}//이건 안됨~function add(a: number, b: number) { return a + b;}// 명시적으로 타입 정보가 선언되지 않으면 절대 타입을 알 수 없다. 타입스크립트는 함수에 선언된 모든 매개변수가 필수라고 가정한다. -> 타입안정성 강화선택적 매개변수type annotation의 앞에 ?를 추가해 매개변수가 선택적이라고 표시한다. 선택적 매개변수는 항상 | undefined 가 유니언 타입으로 추가 되어있고 암묵적으로 undefined가 될 수 있다. 하지만 선택적 매개변수는 | undefined를 포함하는 유니언 타입 매개변수와 다르다.?으로 표시된 선택적 매개변수가 아닌 매개변수는 값이 명시적으..
null과 undefined를 제외한 모든 값은 그 값에 대한 실제 타입의 멤버 집합을 가지므로 타입스크립트는 모든 값의 타입을 확인하기 위해 객체 타입을 이해해야한다. 객체 타입 선언객체 리터럴과 유사해 보이지만 필드 값 대신 타입을 사용해 선언한다.let hong: { id: number; name: string;};hong = { id: 1, name: "Hong"}; 별칭 객체 타입매번 객체 타입을 계속 작성하는 것은 귀찮다.각 객체 타입에 타입 별칭을 할당해 사용하는 방법이 더 일반적이다.// 타입 별칭(type alias)type TUser = { id: number; name: string;};let hong: TUser;hong = {id: 1, name: 'Hong'}; 구조..
타입 별칭 Type Alias자주 사용될 타입에 이름(별명)을 붙이는 것이다.type SomeType = { id: number | string; name: string; age: number; address: string;}; //type alias 리터럴 타입좀 더 구체적인 버전의 원시 타입이다.원시 타입 값 중 어떤 것이 아닌 특정 원시값으로 알려진 타입이다.// type Name = string; -> 무성의 하다고 볼 수 있다.type Name = "Hong" | "Kim" | "Lee"; 유니언타입유니언: 값에 허용된 타입을 둘 이상의 가능한 타입으로 확장하는 것이다.A or B 가 아니다. 둘 이상의 타입 중 하나라는 뜻이 아니다.둘 이상의 타입으로 확장된 타입에서 일부 속성들의 조..