# type assertion

[Typescript] 타입 단언 Type Assertion
이번엔 타입 단언(Type Assertion)에 대해 알아보겠습니다. > 단언하다는 '바른 말을 하다, 주저하지 않고 딱 잘라 말하다'를 의미하는 단어입니다. 그 이름처럼 타입을 딱 정한다라고 생각하고 타입 단언이 무슨 기능인지 알아보도록 하겠습니다. 타입 단언 Type Assertion 타입 단언은 컴파일러에게 해당 값이 특정 타입이라고 지정하는 문법입니다. 이전 포스트들에서 여러 문법과 기능을 하면서 타입스크립트 컴파일러는 어떤 변수나 객체, 함수의 타입을 추론하고 결정한다고 했습니다. 타입 단언은 컴파일러 대신 프로그래머가 이 값이 어떤 타입인지 알리고 해당 타입으로 취급하게끔 만들어줍니다. >컴파일러의 타입 추론 대신, 프로그래머가 컴파일러에게 지정한 타입으로 생각하게 만드는 기능입니다. 타입스크립트는 아래와 같은 빈 객체 생성을 허용하지 않습니다. 왜냐하면 **Student 객체 타입은 id와 name 프로퍼티를 포함한 객체를 Student

[Type Script] 타입 단언( type assertion)의 중요한 예시
처음에 이론으로만 배우다가 역시 막상 코드를 사용하려고 하니까 타입단언을 안 쓰면 안되는 구간이 생겼고, 타입 단언을 사용해줘야함을 알게 되었다. (! 결론 꼭 보기) 상황 redux로 todo list를 store에 저장해서 쓰는 상황이고, todo를 삭제하는 함수 로직에 문제가 발생한다. todo 모듈에서 다음과 같이 타입을 정의했다. 봐야할 부분은 export type T_todoState = Partial>;이다. initialState에서 빈 값을 갖기 때문에 어쩔 수 없이 Partial로 정의했지만 이것이 나중에 todo 삭제 함수의 로직에 방해가 되었다. 에러 다음과 같다. 여기서 봐야할 부분은 storedTodoList.filter() 부분이다. 처음에 정의할 때 Partial로 정의했기 때문에 위와 같이 코드를 쓰면 el 부분에 다음의 에러가 발생한다. 
type assertion란
type assertion Typescript에서는 시스템이 추론 및 분석한 타입 내용을 우리가 원하는 대로 얼마든지 바꿀 수 있다. 이때 "타입 표명(type assertion)"이라 불리는 메커니즘이 사용된다. TypeScript의 타입 표명은 프로그래머가 컴파일러에게 내가 너보다 타입에 대해 더 잘 알고 있고, 나의 주장에 대해 의심하지 말라고 하는 것과 같다. type assertion을 사용하면 값의 type을 설정하고 컴파일러에 이를 유추하지 않도록 지시할 수 있다. 이것은 프로그래머로서 TypeScript가 자체적으로 추론할 수 있는 것보다 변수 요형에 대해 더 잘 이해하고 있을 때이다. 컴파일러는 foo type이 속성이 없는 {}라고 가정하기 때문에 위의 예에서는 컴파일러 오류가 발생한다. 그러
타입스크립트 정리
타입스크립트로 계산기를 만들어보며, 배웠던 점을 정리하고자 한다. type assertion 타입스크립트는, 타입을 추론한다. 이때, 우리가 타입을 더 잘 알고 있다고 판단이 들면, type assertion을 통해, 이를 알릴 수 있다. 타입을 표명하면, 타입스크립트가 추론한 타입이 아닌, 사용자가 표명한 타입을 받아들인다. 이때 실제로 해당 타입이 아니더라도, 타입스크립트가 받아들이기 때문에, 아주 안전한 방법은 아니다. 사용법: value as type index signature 객체 타입을 생성할 때, 타입의 프로퍼티들을 미리 다 알 수 없지만, 프로퍼티들이 어떤 형태를 가져야 하는지는 알 수도 있다. 이때, index signature를 사용하여, 형태를 알릴 수 있다. index signature 파라미터의 타입은 string, number, symbol 혹은 template literal일 수 있다. 사용법: [signature_parameter:
[에러 일지] TypeScript - Type Assertion으로 'Property does not exist...' - ts(2339) 오류 해결하기
타입스크립트에서는 DOM 다루기가 까다롭다. 타입을 지정해주지 않으면 오류를 뿜어내는 경우가 많기 때문이다. 타입의 위계가 정해져 있으며, 자세히는 아니라도 오류를 이해하기 위해 이를 살펴볼 필요가 있다. 각 타입마다 존재하는 프로퍼티가 다르기 때문이다. 다만, React에서 직접 DOM을 다루는 것은 잘못된 방식이다. Element 타입 위계 > EventTarget 관련 오류 querySelector 함수의 결괏값은 'Element' 타입이라는 점에 주의하며 아래 예제를 살펴보자. 자바스크립트에서는 오류가 나지 않지만, 아마 타입스크립트에서는 아래와 같은 오
타입변환, 타입단언
자바스크립트에서 변수의 타입을 변환 할 수 있는 기능을 타입변환이라고 하고, 타입스크립트에서는 자바스크립트와의 구분을 하기위해 타입단언이라고 합니다. 예시1 아래의 코드는 {}의 타입을 알 수 없어서 에러가 납니다. {}를 로 타입변환해주면 해결됩니다. 예시2 타입변환은 아래와 같은 경우에 필요합니다. oject타입의 student
타입스크립트 스터디 - 3
고급 타입 레퍼런스 유니온 타입 문제상황: 리턴하는 타입이 string일 수도 Error일 수도 있는데.. 어찌해야합니까? any를 쓸거면 왜 typescript를 쓰겠어요? type을 제한해서 컴파일시 에러를 발생시키자는게 typescript를 쓰는 이유중 하나일 것 같아요. 전통적인 객체 지향 코드에서는 타입의 계층을 만들어 두 가지 타입을 추상화 할 수 있습니다. 이것이 훨씬 더 명백하기는 하지만 또 약간 지나치기도 합니다. 즉 두 가지 타입을 묶어서 쓸 수 있지만, 굳이 그래야 하나입니다. 그때 사용하는 것이 바로 유니온 타입입니다. 유니온 타입은 여러 타입 중 하나일 수 있는 값을 설명합니다. 각 타입을 구분하기 위해 수직 막대(|)를 사용하므로 number | string | boolean은 number, string 또는 boolean 될