inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 타입스크립트 올인원 : Part2. 실전 분석편

passport에서 req.user 타이핑하기

declare global 로 선언된 타입을 확장하는게 아닌 좁히는것도 가능할가요?

해결된 질문

145

징니

작성한 질문수 8

0

declare global { 
  interface Window extends Omit<Window, 'customProperty'> {} 
}

이런식으로 쓰면 순환 참조 될 것 같은데

확장만 가능할까요?

typescript

답변 2

1

제로초(조현영)

네 좁히는 건 안 됩니다. 그런데 어떤 경우에 좁혀야 하나요??

0

징니

경우를 생각하기보다는 문법적으로 가능한지 궁금해서 질문드렸습니다
답변 감사드립니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

타입스크립트에서 declare global을 사용하여 글로벌 인터페이스를 변경하는 상황에 대해 질문 주셨네요.

declare global을 사용하여 기존 타입을 확장할 수 있지만, 이미 존재하는 속성을 제거하거나 제한적으로 변경하는 것은 일반적으로 어렵습니다. 이는 인터페이스의 특성상 모든 구현체가 해당 속성을 가질 것으로 기대되기 때문입니다. 하지만 TypeScript는 인터페이스를 확장하여 속성을 추가하거나 새로운 속성을 정의할 때 매우 유용하게 사용됩니다.

귀하의 코드에서 Omit<Window, 'customProperty'>Window 인터페이스에서 customProperty를 제거하려고 하지만, 타입 제거는 인터페이스 확장을 지원하지 않습니다. 이 경우 타입스크립트는 순환 참조의 문제를 유발할 수 있습니다. 따라서, 기존 인터페이스의 속성을 제거하려고 하는 것은 현실적으로 어렵고, 다른 방법으로 접근할 필요가 있습니다.

이해를 돕기 위해, 타입을 확장하는 것에 대한 예시는 아래 URL에서 확인할 수 있습니다.
- index.d.ts 에서 global declare 선언을 했을 때와 하지 않았을 때의 차이: 여기서는 declare global의 사용과 관련된 내용이 다뤄지고 있습니다. 위와 같은 경우에 Modules와 Script의 차이가 있었던 이유도 설명하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

타입 오버라이딩

0

77

2

React19에서 useRef 타입 정의의 변화

0

118

2

jQuery를 $로 한 번 더 감싼 형태

0

54

1

typescript interface를 jsdoc으로 주석달 때

0

228

2

declare module시 import 위치

0

195

2

typescript 강의를 보고 개발을 하다가 강의와 다른 내용인데 물어볼곳이 여기밖에 없어서 질문 드립니다.

0

234

1

강의에 필요한 사전준비와 예제 코드 첨부

1

308

1

local.ts 예제코드 첨부 합니다.

1

227

1

redux 예제코드 가져와서 강의 보면서 따라하는데

1

242

1

react 함수 컴포넌트 타이핑은 있는데 클래스 컴포넌트 타이핑 예제 코드가 없네요.

1

284

1

axios 1.6.0 버전으로 보고 있는데영

4

391

1

Module '"axios"' has no default export 에러 나시는분들

0

879

1

안녕하세요, 제로초님 타입스크립트 axios 분석 강의보고 궁금한점이 있어서 질문드립니다

1

386

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