타이프 라이터 definitelyTyped 정의 파일을 확장 :나는 다음과 같은 오류를 받고 있어요
src/models/priceAdjustment.ts(55,2): error TS2345: Argument of type '{ as: string; foreignKey: string; gql: any; }' is not assignable to parameter of type 'AssociationOptionsHasMany'. Object literal may only specify known properties, and 'gql' does not exist in type 'AssociationOptionsHasMany'.
오류는, 내가 존재하지 않는 "GQL"키를 (내가 그것을 연결하고있어 지정하기 위해 노력하고있어 분명하다 그래서 나중에 다른 곳에서 내 코드에 액세스 할 수 있습니다.)
내가 무엇을하고 싶은지 model.hasMany
interface here을 확장하고 내 자신의 키를 추가하십시오. 이것이 가능한가? 그렇다면 어떻게해야합니까?
현재 해결 방법은 객체를 전달하기 전에 <any>
으로 캐스팅하는 것입니다.이 방법은 더러운 해결 방법 인 것 같습니다.
나는 다음과 같은 시도 :
import Sequelize from 'sequelize';
export declare module Sequelize {
export interface MyAssociationOptionsHasMany extends Sequelize.AssociationOptionsHasMany {
gql?: any
}
export interface MyAssociations extends Sequelize.Associations {
hasMany(target: Sequelize.Model<any, any>, options?: MyAssociationOptionsHasMany): void;
}
}
을 그리고 지금은 다음과 같은 오류 얻을 :
TypeError: Cannot read property '239' of undefined
at getDeclarationSpaces (C:\Users\user\AppData\Roaming\npm\node_modules\typescript\lib\tsc.js:33121:54)
at checkExportsOnMergedDeclarations (C:\Users\user\AppData\Roaming\npm\node_modules\typescript\lib\tsc.js:33067:41)
at checkModuleDeclaration (C:\Users\user\AppData\Roaming\npm\node_modules\typescript\lib\tsc.js:35036:17)
at checkSourceElement (C:\Users\user\AppData\Roaming\npm\node_modules\typescript\lib\tsc.js:35505:28)
at Object.forEach (C:\Users\user\AppData\Roaming\npm\node_modules\typescript\lib\tsc.js:275:30)
at checkSourceFileWorker (C:\Users\user\AppData\Roaming\npm\node_modules\typescript\lib\tsc.js:35566:20)
at checkSourceFile (C:\Users\user\AppData\Roaming\npm\node_modules\typescript\lib\tsc.js:35551:13)
at getDiagnosticsWorker (C:\Users\user\AppData\Roaming\npm\node_modules\typescript\lib\tsc.js:35604:17)
at Object.getDiagnostics (C:\Users\user\AppData\Roaming\npm\node_modules\typescript\lib\tsc.js:35593:24)
at C:\Users\user\AppData\Roaming\npm\node_modules\typescript\lib\tsc.js:56188:85
https://github.com/DefinitelyTyped/DefinitelyTyped#how-can-i-contribute –
@ Mörre 이것은 내 응용 프로그램 용으로 특별히 만든 속성이므로 후속 작업과 관련이 없습니다 (내 응용 프로그램 이외), 변경 사항을 저장소에 적용하는 것은 잘못입니다. – FrankerZ
Typescript는 [선언 병합] (https://www.typescriptlang.org/docs/handbook/declaration-merging.html)을 수행하므로 인터페이스에 추가하여 사용자 정의 파일을 만들 수 있어야합니다. –