2017-12-05 6 views
0

응용 프로그램 코드의 Flow 객체 유형 정의에서 키를 가져올 수 있습니까? 즉, 어떤 식 으로든 런타임 코드에서 구체화 된 흐름 유형 정의입니까?코드에서 Flow 객체 유형의 키 가져 오기

사용 사례 :

type Props = { 
    userID: string, 
    size: number | PhotoSize, 
    subscribePresence: Function, 
    unsubscribePresence: Function, 
    presenceStatus: ?PresenceStatus, 
    photoURL: ?string, 
    userName: ?string, 
}; 

class Photo extends Component<Props> { 
    // ... 
    render() { 
    const { userID, size, presenceStatus } = this.props; 
    // Other props used elsewhere in the component 
    const restProps = _.omit(this.props, ???) 
    } 
} 

render에서 사용되지 않는 다른 소품이 있으므로 확산 destructure (const { /* etc */ ... rest} = this.props)가 작동하지 않을 것입니다. 그러나 지정된 다른 소품 (className, id 등)을 찾아야합니다.

???Object.keys(Props)과 유사한 것으로부터 유래 될 수 있습니까? 내가 알 수있는 한 타입 정의가 컴파일되므로 런타임 코드에서 Props을 참조하면 RuntimeError: Props is not defined이 발생합니다.

+0

아니요, 모든 유형 정보는 컴파일시 –

답변

1

흐름은 정적 유형 분석을 제공하며 모든 흐름 코드는 런타임 전에 제거됩니다 (흐름 주석은 유효한 자바 스크립트 코드가 아닙니다).

원하는 것을 얻으려면 Flow 코드를 제거한 후 예상되는 Props에 대한 정보가 있어야합니다. 당신은 당신의 구성 요소에있는 모든 소품에 대한 defaultProps을 설정하여 그것을 할 수 있고 당신은 쓸 수 :

const restProps = _.omit(this.props, Photo.defaultProps) 

설정 defaultProps 어쨌든 일반적으로 좋은 생각입니다.

+0

에서 제거됩니다. 감사합니다. Tomas; 'defaultProps'처럼 보일 것입니다. – FeifanZ