안녕하세요, 제로초님 타입스크립트 axios 분석 강의보고 궁금한점이 있어서 질문드립니다
[제로초 강좌 질문 필독 사항입니다]
질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.
도움이 되는 질문을 하는 방법을 알려드립니다.
https://www.youtube.com/watch?v=PUKOWrOuC0c
```
export interface AxiosInstance extends Axios {
<T = any, R = AxiosResponse<T>, D = any>(config: AxiosRequestConfig<D>): Promise<R>;
<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<R>;
defaults: Omit<AxiosDefaults, 'headers'> & {
headers: HeadersDefaults & {
[key: string]: AxiosHeaderValue
}
};
}```해당 axios 분석 영상을 보고 질문이있습니다,
AxiosInstance 인터페이스에 익명함수 시그니처 형식으로 타입정의가 되어있는데요
나름 찾아본결과 이거는 다형성 관련해서 다중오버로딩할때 편하다라고는 생각은 했습니다,,,
근데 제가 궁금한점은 제가 일반적으로 axios 기본기능만 쓰면 사실 extends해서 가져오니까요,
굳이 안써도잘 동작 할거같아서 의문이 들었습니다,,
제가 나름 생각한 써져있는 이유는 axios라이브러리를 이용해서 자체 확장을 할때 필요 한가라고도 생각이드는데요 막연히 생각이들고 예상이라 정확히 어떨때 쓸 의도로 둔건지 궁금해서 질문드립니다
요약: AxiosInstance 에 익명함수 시그니처의 의도가 뭘까요 extends 해오는거라 없어도 될거같은데요 어떤상황에 대비해서 추가된 코드일까요?
답변 1
1
axios.get(주소) 이런식으로 할 수 있는데
axios({ method: 'get', url: 주소 })나 axios(주소, { method: 'get' }) 이런 식으로도 가능합니다. 이래서 익명 함수 시그니처가 있는 겁니다.
0
감사합니다 제로초님, 하나더 궁금한게 있는데요 그럼
post<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
put<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
patch<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
postForm<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
putForm<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
patchForm<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;```해당 메서드들까지 쓰려면 시그니처가 더 추가되어야할것 같은데요 없어도 되나요?
export interface AxiosInstance extends Axios {
<T = any, R = AxiosResponse<T>, D = any>(config: AxiosRequestConfig<D>): Promise<R>;
<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<R>;
// 이 시그니처도 추가 되어야하는거 아닌가요??
<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
defaults: Omit<AxiosDefaults, 'headers'> & {
headers: HeadersDefaults & {
[key: string]: AxiosHeaderValue
}
};
}
0
아뇨 필요없습니다. axios(주소, 데이터, 설정)이라는 사용법은 없습니다. 얘는 post put patch 같은 메서드랑 관련도 없고요.
다른 언어랑 헷갈리고 계신것 같은데요.
0
감사합니다 제가 헷갈린 부분이 있네요!!
아 그렇네요 제가 아예 잘못생각했네요 감사합니다!!!
axios.path(주소, 데이터, 설정)로 착각했네요
axios(주소, 데이터, 설정) 라고 해주셔서 이해 되었습니다
타입 오버라이딩
0
77
2
React19에서 useRef 타입 정의의 변화
0
118
2
jQuery를 $로 한 번 더 감싼 형태
0
54
1
typescript interface를 jsdoc으로 주석달 때
0
229
2
declare module시 import 위치
0
195
2
declare global 로 선언된 타입을 확장하는게 아닌 좁히는것도 가능할가요?
0
145
2
typescript 강의를 보고 개발을 하다가 강의와 다른 내용인데 물어볼곳이 여기밖에 없어서 질문 드립니다.
0
234
1
강의에 필요한 사전준비와 예제 코드 첨부
1
308
1
local.ts 예제코드 첨부 합니다.
1
227
1
redux 예제코드 가져와서 강의 보면서 따라하는데
1
242
1
react 함수 컴포넌트 타이핑은 있는데 클래스 컴포넌트 타이핑 예제 코드가 없네요.
1
285
1
axios 1.6.0 버전으로 보고 있는데영
4
391
1
Module '"axios"' has no default export 에러 나시는분들
0
879
1
안녕하세요. 제로초님 당신의 강의 매니아 입니다. typescript 모듈 관련 질문이 있어서요.
0
268
1
axios catch 에서 error 타입에 대해 as 없이 이렇게 사용하면 어떨까요?
0
405
1
global 선언 시 export {}
0
296
1
initialState가 제네릭 S인 이유가 잘 이해가 되지 않습니다.
0
308
1
declare module vs declare namespace
0
473
1
declare namespace vs namespace
0
494
2
"axios": "1.4.0" 버전 axios type 코드가 강의와 다릅니다!
0
555
1
Redux type 설정 과정에서 발생한 오류 질문 (ts[2345])
1
376
2
index.d.ts 에서 global declare 선언을 했을 때와 하지 않았을 때의 차이
0
403
1
미들웨어가 커링패턴으로 이루어진 이유
0
435
1
axios 파트 첫번째 강의 질문입니다
0
531
1





