기존 라이브러리의 타입과 새로 만든 타입이 충돌할 때 해결방법이 궁금합니다!
520
작성한 질문수 9
제로초님 안녕하세요? 강의 들은 내용을 응용해 다른 라이브러리의 타입을 수정하려고 하는데 타입 충돌이 발생해서 조언을 구합니다.
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를 지우지 않으면 안되는 걸까요?
기존 라이브러리의 타입을 수정하고 싶을 때 이런 경우는 어떻게 해야할지 감이 안와서요ㅜㅜ 조언 부탁드립니다~
답변 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
how-to-overwrite-incorrect-typescript-type-definition-installed-via-types-packa라고 검색하면 되었군요! 항상 감사합니다~
'S3' 형식에 'S3Client' 형식의 destroy, middlewareStack, send 속성이 없습니다.ts(2739)
0
505
1
throw new Error(&#x60;${this.name}.hasMany called with something that&#x27;s not a subclass of Sequelize.Model&#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





