야매로 잠시 써본거라서 정확하지 않을수도 있음다 ㅇㅇ
- 제네릭과 타입추론이 생각보다 많이 불편.
타입 2개를 써먹으려면
function fnName<T, K = keyof T>{...}
처럼 해야하는데 C++ 템플릿 선언에 비해 선언이 좀 짜증나는 듯.
음. . 그리고 auto 키워드 좀 있었으면.
타입이 길어지면 alias를 하게되는데 alias후 못알아먹는 경우가 간혹 발생한드아..
- 함수 오버로딩
이게 제일 빡치는 부분.
js 한계 때문에 발생하는데 오버로딩용 선언을 여러개 해두고 모든것을 커버할 수 있는 단 하나의 함수로 구현해야됨..
인생살면서 이따위 오버로딩은 처음본다... ㅋㅋㅋ
( 추가) 리엑트랑 같이 쓰면 더 짜증나는게 hooks는 조건문안에서 못쓰게 되는등의 제약이 제네릭+오버로딩과 만나면 상당히 그시기한 상황들을 많이 만나볼수 있습니다.
코어나 자주쓸 유틸부분에 제네릭+오버로딩은 당연히 들어가야할텐데 any 안쓰고 구현하려면 고통 좀 받을듯 ㅋㅋ
한줄요약 : 쓰면 쓸수록 js의 거지같은 설계나 한계를 알게된다.
- dc official App
오버로딩은 잘 안 쓴거 같은데 discriminated union type을 주로 쓴 듯. 일단 이정도면 최선인거 같아서 만족하면서 쓰고 있음 3.7부터 자기 참조타입도 추가되었고
https://github.com/microsoft/TypeScript/issues/14833
- dc App
유니온 써먹긴한데 그래도 타입이나 확장성에서 이래저래 불편한점이 좀 되는것 같습니다ㅠ
동적타입 언어에 오버로딩이 어딨음
그마저도 유니온 없거나 못쓰는 애들이나 하는거지
ㅇㅇ 자스로 컴파일되기 땜시 어쩔수 없긴함요. 유니온은 잘 써먹고 있고 좋은 시스템인듯.
동적타입에 오버로딩없는이유가머임?
타입으로 시그니쳐를 다르게 하는게 불가능
뭐 인자 개수로 다르게 하는건 가능하긴함
그니까 그 이유가머임...
컴파일 타임에 타입을 모르니까
ㅇㅎ
런타임때 확인하니깐. 참고로 커먼리슾은 제네릭이나 CLOS의 다형성으로 보완합니다.
1번은 코드가 잘못된것같은데
다른언어 메타함수 같은거 내장돼있는게 꽤 있는데 (Partial, Omit 같은애들) 쓰면 좀 편해질거임
와 둘다 몰랐던건데 감사합니다
훅은 조건문을 함수가 품는식으로 설계해야함
처음엔 최대한 깔끔하게 뽑으려다 고생 좀 했죠.
뉴비면 깃헙에 utility-types 가서 간략하게 타입스크립트 어떤 느낌인지 보고 오셈 - dc App
ㅓㅜㅑ 이런게 있다니 좋읍니다!!