inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Node.js에 TypeScript 적용하기(feat. NodeBird)

files와 typeRoots 옵션

기존 라이브러리의 타입과 새로 만든 타입이 충돌할 때 해결방법이 궁금합니다!

520

maliethy

작성한 질문수 9

0

제로초님 안녕하세요?  강의 들은 내용을 응용해 다른 라이브러리의 타입을 수정하려고 하는데 타입 충돌이 발생해서 조언을 구합니다.

native-base라는 라이브러리의 Accordion 컴포넌트의 속성 중 expanded의 타입을 number에서 number[ ]로 바꾸고 싶어서

수정하고 싶은 부분을 src/@types/index.d.ts에 다음과 같이 만들고

export {};
declare module 'native-base' {
  export interface Accordion extends Testable {
    dataArray: Array<any>;
    headerStyle?: RnViewStyleProp;
    contentStyle?: RnViewStyleProp;
    renderHeader?: (item: any, expanded: boolean, index: number) => React.ReactElement<any>;
    renderContent?: (item: any, index: number) => React.ReactElement<any>;
    expanded?: number[]; //기존 number를 number[]로 수정함
    icon?: string;
    expandedIcon?: string;
    iconStyle?: RnTextStyleProp;
    expandedIconStyle?: RnTextStyleProp;
    style?: RnViewStyleProp;
  }
}

tsconfig.json의 "typeRoots":["./src/@types/index.d.ts"] 을 설정하여 새로 만든 타입을 인식하는 데까지는 성공했습니다.  그런데 기존 node_modules/native-base에 있는 index.d.ts를 먼저 인식해 수정한 타입이 적용되지 않습니다.  node_modules에 있는 native-base의  index.d.ts를 지우지 않으면 안되는 걸까요?

기존 라이브러리의 타입을 수정하고 싶을 때 이런 경우는 어떻게 해야할지 감이 안와서요ㅜㅜ 조언 부탁드립니다~

typescript nodejs 웹앱

답변 1

1

제로초(조현영)

이 경우는 확장한다기보다는 기존 타입을 수정하는 것에 가깝습니다. 없는 속성을 추가하는 것은 쉬우나 수정하는 것은 어렵습니다.

수정을 위해서는 저는

https://stackoverflow.com/questions/40322788/how-to-overwrite-incorrect-typescript-type-definition-installed-via-types-packa

여기서 patch-package를 쓰라는 댓글대로 하는 것을 추천드립니다.

node_modules의 native-base의 소스 코드를 직접 수정한 뒤 patch-package를 적용하면 됩니다.

0

maliethy

how-to-overwrite-incorrect-typescript-type-definition-installed-via-types-packa라고 검색하면 되었군요! 항상 감사합니다~

'S3' 형식에 'S3Client' 형식의 destroy, middlewareStack, send 속성이 없습니다.ts(2739)

0

505

1

throw new Error(&amp;#x60;${this.name}.hasMany called with something that&amp;#x27;s not a subclass of Sequelize.Model&amp;#x60;); 에러 질문

0

342

1

안녕하세요.. connect ECONNREFUSED 127.0.0.1:3306 관련해서 질문드립니다

0

955

1

@types를 dependencies에 넣는 이유?

0

398

1

JS에서 babel 사용시 `import * as` 구문을 안써도되는데, 바벨이 esModuleInterop: true 로 처리해주는 것인가요?

0

318

1

Sequelize Association 오류

0

501

2

Sequelize constructor.primaryKeyAttributes 오류

0

960

1

Sequelize에 요청을 보내면 오류가 뜹니다

0

793

1

강좌에서 사용된 3개의 코드 의미가 궁금합니다 [ 코드 : 1. [ key:string]:string] 2. delete user.password , 3.passport.deserializeUser<number> ]

0

337

1

@mui/x-data-grid 에 사용자정의 컬럼 타입을 추가해서 사용하려고 합니다.

0

2608

1

미들웨어 에러

1

312

1

Could not find a declaration file for mould '../utils/jwt-utils'

1

179

1

마지막에 type과 interface 추가하는 부분

0

217

1

다른 컴퓨터에서 제가 만든 DB 테이블의 데이터를 그대로 사용하려면?

0

282

1

express 모듈 에러 관련

0

236

1

import * as A from 'B'

0

212

1

MySql ssl 보안 옵션 질문 입니다.

0

351

2

passport/index.ts 에러 입니다

1

450

1

routes/post.ts 페이지에서 에러나요..

0

313

1

passport/index.ts 에러납니다...

0

816

1

ts import 에러

0

439

1

타입스크립트로 변환후 nextjs 빌드 후 배포

0

258

1

sequelize include 질문드립니다.!

0

186

1

roperty 'id' does not exist on type 'User'.

0

891

1