프론트엔드/Typescript
-
[Typescript] any 타입은 지양하자프론트엔드/Typescript 2023. 6. 9. 09:45
any 타입은 지양해야 한다. 타입스크립트의 타입 시스템 두 가지 특징이 있다. 점진적(gradual) 선택적(optional) 코드에 타입을 조금씩 추가할 수 있기에 점진적이고, 언제든지 타입 체커를 해제할 수 있기 때문에 선택적이다. any 타입에는 타입 안정성이 없다. 함수 시그니처를 무시한다. 즉, 리턴 타입을 무시한다. 버그를 감춘다. 타입 설계를 감춘다. 객체를 정의할 때 객체 안에 있는 속성의 타입을 any로 명시한다면 설계를 감추게 된다. 타입시스템의 신뢰도를 떨어뜨린다.
-
[Typescript] 타입 단언 & 타입 선언프론트엔드/Typescript 2023. 6. 9. 09:43
타입 단언 & 타입 선언 타입스크립트에서 변수에 값을 할당하고 타입을 부여하는 방법은 두 가지이다. interface User { name: string }; const kim: User = { name: 'Kim' }; // 예시 A const lee = { name: 'Lee' } as User; // 예시 B결과가 다르다. A는 타입 선언을 붙여서 해당 값이 선언된 타임인 반면 B는 타입 단언을 하여 타입스크립트가 추론한 타입이 존재해도 User타입으로 간주된다. 타입 단언을 하면타입 체커가 무시하는 일이 발생한다. 결국 타입 체크가 안되는 것은 any 타입과 비슷하다. 참고자료 이팩티브 타입스크립트
-
If문과 switch문을 사용하지 말고 Object Literals 사용하기프론트엔드/Typescript 2022. 11. 29. 20:22
const renderSomething = useCallback((something: Something) => { const renderer: { [key in SomeType]: ReactElement } = { food: Food is here!, drive: ( onChangeProps(e, something)} > {Object.entries(Exam.Samples).map(entry => { const [key, label] = entry; return {label}; })} ) }; return ( {renderer[something.somesome]} ); }, [dep1, dep2]); // file name is Exam import { SomeType } from '~/somewhere..