Omit 타입에서 K extends keyof any에 대해서 질문있습니다.
423
작성한 질문수 7
Omit에서 K extends keyof any로 키값만 들어올 수 있도록 제한을 주었는데
이전 강의때 말씀해주셨던 타입은 정확할수록 좋다는 말씀이 생각나서 질문드립니다.
키 값중에서도 T의 키값이 들어와야 더 정확하다고 생각해서 K extends keyof T 가 더 올바르다고 생각하는데
any로 쓴 이유가 있을까요??
type E<T, U> = T extends U ? never : T;
type P<T, K extends keyof T> = {
[P in K]: T[P];
};
type O<T, K extends keyof T> = P<T, E<keyof T, K>>;
답변 2
2
저도 해당부분 궁금해서 이거 좀 stric한 Omit이 낫지 않나 생각 해서 찾아보니까 이미 typescript 레포에 이슈가 올라 와있고 microsoft/typescript 오픈소스 개발자에 의해 거절 당한 이슈네요.
https://github.com/microsoft/TypeScript/issues/30825
코멘트들이 길어서 그냥 대충 봤는데 typescript 개발자 말로는 strictOmit 같은거 만들어서 커스텀 해서 써라! 인것 같습니다.
아래는 해당 이슈의 microsoft/typescript 개발자의 코멘트를 번역한 내용입니다.
많은 논의 끝에, 우리는 라이브러리가 자체적으로 "더 엄격한" 버전의 생략(및 제외 및 기타 친구)을 제공하는 것이 바람직하다고 생각합니다. 이러한 유형의 엄격한 버전은 업스트림 제약 조건을 강요한다는 측면에서 매우 전염성이 강하며 사람들이 현명하게 선택할지 불분명합니다. 신중하게 관리하지 않으면 실제 마찰을 유발할 수 있습니다.
Omit이 라이브러리에 추가되었기 때문에 더더욱 그러합니다. OmitStrict를 선택하면(물론 여러 정의 중에서 선택할 수 있겠지만) 사용자 공간에 좋은 이름이 별로 남지 않습니다. 이러한 모든 헬퍼 유형을 작성하는 방법에는 몇 가지가 있으며 개발자가 "엄격한"에 대한 자신의 정의에 맞는 유형을 선택하도록 하는 것이 개인의 자유를 극대화할 수 있는 옵션입니다.
여기와 트위터에서 우리가 선택한 (전적으로 방어 가능한 IMO의) 생략 정의에 대한 반응은 그들이 선호하는 정의를 선택하지 않아 약 30~70%의 개발자를 화나게 할 OmitStrict를 선택하는 것에 대해 왜 우리가 별로 좋아하지 않는지를 보여줍니다. 정의가 완전히 모호하지 않은 경우에만 라이브러리에 추가하는 것이 좋은데, OmitStrict는 그 기준에 부합하지 않습니다. 돌이켜보면 Omit도 그렇지 않았고, 어쩌면 그냥 빼버렸어야 했을지도 모릅니다.
개발자 여러분, TS가 그 이름을 짓밟지 않을 거라는 사실을 알고 행복하고 안전하게 OmitStrict에 대한 정의를 선택해 보세요 😬.
데코레이터가 현재도 자주 쓰이는 문법인가요?
0
81
2
유틸리티 타입 실제로 구현은 못해도 하나씩 외우면 실무할 때 지장 없겠죠?
0
66
1
매핑 타입은 type에서밖에 안된다고 하네요?
0
65
2
자바에서의 오버로딩과 같은 개념이라고 생각해도 되나요?
0
69
2
filter 함수 반환 타입 네로잉 질문
0
74
2
map<U>(callbackfn: ....) 할때 U는 왜 여기 있는거에요??
0
47
2
ts 컴파일을 위한 type 라벨링 부분
0
46
1
concat 함수 타입 구현 중 질문 있습니다!
0
100
2
filter 메소드 질문
0
53
1
forEach 제네릭 관련 문의
0
60
1
타입 추론 시 가장 넓은 범위로 추론이 되는 건가요?
0
165
1
enum이 javascript로 트랜스파일링될때 사라진다하셨는데요
0
207
1
함수 파라미터 타입 정의 시 ...args: any[]와 ...args: any 의 차이
0
223
1
Flat type에서 ReadonlyArray 타입을 사용하는 이유?
0
157
1
bind type 질문
1
149
1
Lowercase type 관련 질문
0
152
1
key-value 타입 자동추론 질문드립니다
0
266
1
타입스크립트 교과서, p131
0
266
1
타입스크립트 교과서 p122 forEach 메서드 질문
0
232
1
타입스크립트 교과서 p116 , 코드에러남
1
269
1
타입스크립트 교과서 p112 , 코드가 안읽힙니다..
0
266
1
타입스크립트 교과서 p83
1
184
1
타입스크립트교과서 p39 쪽 코드가 이해가 안되요
1
227
1
class 에서 ts의 private vs js의 private field( # )
0
339
1





