jQuery를 $로 한 번 더 감싼 형태
58
投稿した質問数 4
안녕하세요, 제로초님! 좋은 강의 잘 듣고있습니다.
아래 $(tag)의 타입 추론 과정에 대해 질문드립니다.
// tag: JQuery<HTMLElement>
const tag = $("ul li")
.addClass("hello")
.addClass(function (index) {
return "item-" + index;
});
//* jQuery를 $로 한번더 감싼 형태
$(tag).html(function (i: number) {
console.log(this);
return JQuery와 $의 타입 정의는 다음과 같습니다.
// JQuery
interface JQuery<TElement = HTMLElement> extends Iterable<TElement> {...}// $
<T extends Element>(element_elementArray: T | ArrayLike<T>): JQuery<T>;즉, $(tag)의 tag는 JQuery<HTMLElement>이면서 element_element에 대응하므로 Element | ArrayLike<Element>이기도 합니다. 즉 JQuery<HTMLElement>가 Element | ArrayLike<Element>가 되기에 충분하다는 것을 추론할 수 있습니다.
JQuery<HTMLElement> extends Iterable<HTMLElement> 이므로 Iterable<HTMLElement>은 Element | ArrayLike<Element> 가 되기에 충분하다는 건데, 이 근거를 찾기 위해 Iterable의 타입도 찾아본 결과 다음과 같았습니다.
interface Iterable<T> {}즉 Iterable<HTMLElement>은 non-nullish라는 것입니다.
하지만 이게 Element | ArrayLike<Element> 가 되기에 왜 충분한 것인지를 모르겠습니다. lib.dom.d.ts에 정의된 Element 타입은 다음과 같이 매우 복잡하여 더 들여다 보진 못했습니다.
interface Element extends Node, ARIAMixin, Animatable, ChildNode, NonDocumentTypeChildNode, ParentNode, Slottable {回答 1
1
$에 해당하는 타입은
<T>(selection: JQuery<T>): JQuery<T>;
이겁니다. 그래서 그냥 JQuery가 $(tag)처럼 들어갈 수 있는 것입니다.
타입 오버라이딩
0
78
2
React19에서 useRef 타입 정의의 변화
0
128
2
typescript interface를 jsdoc으로 주석달 때
0
234
2
declare module시 import 위치
0
198
2
declare global 로 선언된 타입을 확장하는게 아닌 좁히는것도 가능할가요?
0
147
2
typescript 강의를 보고 개발을 하다가 강의와 다른 내용인데 물어볼곳이 여기밖에 없어서 질문 드립니다.
0
236
1
강의에 필요한 사전준비와 예제 코드 첨부
1
311
1
local.ts 예제코드 첨부 합니다.
1
230
1
redux 예제코드 가져와서 강의 보면서 따라하는데
1
248
1
react 함수 컴포넌트 타이핑은 있는데 클래스 컴포넌트 타이핑 예제 코드가 없네요.
1
287
1
axios 1.6.0 버전으로 보고 있는데영
4
393
1
Module '"axios"' has no default export 에러 나시는분들
0
881
1
안녕하세요, 제로초님 타입스크립트 axios 분석 강의보고 궁금한점이 있어서 질문드립니다
1
389
1
안녕하세요. 제로초님 당신의 강의 매니아 입니다. typescript 모듈 관련 질문이 있어서요.
0
269
1
axios catch 에서 error 타입에 대해 as 없이 이렇게 사용하면 어떨까요?
0
405
1
global 선언 시 export {}
0
298
1
initialState가 제네릭 S인 이유가 잘 이해가 되지 않습니다.
0
310
1
declare module vs declare namespace
0
478
1
declare namespace vs namespace
0
500
2
"axios": "1.4.0" 버전 axios type 코드가 강의와 다릅니다!
0
561
1
Redux type 설정 과정에서 발생한 오류 질문 (ts[2345])
1
382
2
index.d.ts 에서 global declare 선언을 했을 때와 하지 않았을 때의 차이
0
409
1
미들웨어가 커링패턴으로 이루어진 이유
0
441
1
axios 파트 첫번째 강의 질문입니다
0
537
1

