개체를 설명하는 json 스키마가 있습니다. Person. 내가 타이프 스크립트 파일에 해당 스키마를로드 할 수 있도록하고 싶습니다 직접이 방법이 들어webpack을 사용하여 json 스키마를 typescript에 동적으로로드하는 방법
import Person from './schema/person.schema.json';
, 나는 (json-schema-to-typescript를 사용하여) 다음을 통과 타이프 인터페이스 선언에 JSON 파일을 변환 로더를 생성 ts-loader의 결과.
내 웹팩 이런 식으로 구성되어:
: JSON 파일 문자열로 간주되도록webpack.config.js (발췌)
module: {
rules: [
{
test: /\.ts$/,
loader: 'ts-loader',
},
{
test: /\.schema\.json$/,
loader: 'ts-loader!jsonschema-loader',
exclude: /(node_modules)/,
},
]
},
이 question 내가 선언을 구성한 다음을
선언 .dts :
declare module '*.schema.json' {
const schema: string;
export default schema;
}
내 로더가 처리하는 파일 이름을 변경하므로 ts-loader가로드하는 것으로 생각하는 내용은 person.schema.ts
입니다. 또한, 내 로더의 결과가 올바른지 확인했습니다. 그러나
/**
* This file was automatically generated by json-schema-to-typescript.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run json-schema-to-typescript to regenerate this file.
*/
export interface Person {
firstName: string;
lastName: string;
/**
* Age in years
*/
age?: number;
[k: string]: any;
}
내 프로젝트를 빌드 할 때, 사람은 객체로 인식되지 않고 컴파일이 실패 : 여기있다
import Person from './schema/person.schema.json';
const person: Person = {
lastName: 'Doe',
firstName: 'John',
};
console.log(person);
컴파일이 실패
하는 index.js :
ERROR in ./src/index.ts
(3,15): error TS2304: Cannot find name 'Person'.
내 선언에서 .schema.json 파일의 xport를 문자열로 사용하면 내 로더가 동적으로 파일 이름 (this.resourcePath)을 ts 파일로 변경하여 ts-loader가이를 표준 ts 파일로보고 Person 객체를 내 보내야합니다.
내가 뭘 잘못하고 있니?
도움이 될 수도 있습니다. https://stackoverflow.com/q/31173738/794088 – petey
개인이 기본 내보내기가 아니기 때문에 pls가 시도해보십시오. {Person} from './schema/person.schema.json '; – Daniel
@Daniel 실제로 '기본 인터페이스 Person'을 내 보내야합니다. –