타입스크립트 interface 타입 추출하기

2021-07-18

https://github.com/styleguidist/react-docgen-typescript

react-docgen-typescript
를 사용하여 파일을 parse 하면 다음과 같은 객체의 배열을 얻을 수 있다.
{ tags: {}; filePath: "/Users/jerrynim/Desktop/components/index.ts"; description: ""; displayName: "Component"; methods: []; props: { description: "", name: "", parent: { fileName: "", name: "", }, declarations: [[Object]], required: false, type: { name: "boolean" }, }[]; }
궁극적으로 다음과 같은 형태의 객체를 구하려고 하는데
"Text": { "size": { "type": "number", "defaultValue": 11 },
이를 위해 간단한 코드를 작성합니다
const propTypes = parse(path.resolve(__dirname, "./components/index.ts")) const props = {} const getTypefromProps = (props) => { const newProps = {} Object.keys(props).forEach((key) => { newProps[props[key].name] = { type: props[key].type.name, defaultValue: props[key].defaultValue } }) return newProps } propTypes.forEach((propType) => { Object.assign(props, { [propType.displayName]: getTypefromProps(propType.props), }) })
이때 기본 react의 타입또한 포함되므로 필터링을 해주도록 합니다.
if (!(props[key].parent?.fileName ?? "").includes("node_modules/react")) {
buy me a coffeebuy-me-a-coffee