【问题标题】:Declare module for subfolder为子文件夹声明模块
【发布时间】:2018-06-23 18:03:59
【问题描述】:

我正在尝试为模块“react-facebook-login/dist/facebook-login-render-props”创建类型,这是https://github.com/keppelen/react-facebook-login 的一部分。请注意,它位于子文件夹中。

我创建了一个包含以下模块声明的 d.ts 文件:

declare module "react-facebook-login/dist/facebook-login-render-props" {

    interface RenderProps {
        onClick: Function;
        isDisabled: boolean;
        isProcessing: boolean;
        isSdkLoaded: boolean;
    }

    interface ReactFacebookLoginProps {
        appId: string;
        callback(userInfo: ReactFacebookLoginInfo): void;
        onFailure?(response: ReactFacebookFailureResponse): void;

        autoLoad?: boolean;
        buttonStyle?: React.CSSProperties;
        containerStyle?: React.CSSProperties;
        cookie?: boolean;
        cssClass?: string;
        disableMobileRedirect?: boolean;
        fields?: string;
        icon?: string | React.ReactNode;
        isDisabled?: boolean;
        language?: string;
        onClick?(event: React.MouseEvent<HTMLDivElement>): void;
        reAuthenticate?: boolean;
        redirectUri?: string;
        scope?: string;
        size?: "small" | "medium" | "metro";
        textButton?: string;
        typeButton?: string;
        version?: string;
        xfbml?: boolean;
        isMobile?: boolean;
        tag?: Node | React.Component<any>;
        render?(props: RenderProps): void;
    }

    interface ReactFacebookFailureResponse {
        status?: string;
    }

    interface ReactFacebookLoginInfo {
        id: string;
        accessToken: string;
        name?: string;
        email?: string;
    }

    interface ReactFacebookLoginState {
        isSdkLoaded?: boolean;
        isProcessing?: boolean;
    }

    class ReactFacebookLogin extends React.Component<
        ReactFacebookLoginProps,
        ReactFacebookLoginState
        > {}
}

但似乎没有收到,因为我收到错误消息:

error TS7016: Could not find a declaration file for module 'react-facebook-login'. '.....\node_modules\react-facebook-login\dist\facebook-login-with-button.js' implicitly has an 'any' type.

我可以做些什么来输入这个位于包子文件夹中的文件?

【问题讨论】:

    标签: reactjs typescript


    【解决方案1】:

    原来问题不在于文件位于子文件夹中。

    对于正在寻找解决方案的 Google 员工来说,这就是我最终得到的结果:

    declare module "react-facebook-login/dist/facebook-login-render-props" {
    
        export interface RenderProps {
            onClick: Function;
            isDisabled: boolean;
            isProcessing: boolean;
            isSdkLoaded: boolean;
        }
    
        interface ReactFacebookLoginProps {
            appId: string;
            callback(userInfo: ReactFacebookLoginInfo): void;
            onFailure?(response: ReactFacebookFailureResponse): void;
    
            autoLoad?: boolean;
            buttonStyle?: React.CSSProperties;
            containerStyle?: React.CSSProperties;
            cookie?: boolean;
            cssClass?: string;
            disableMobileRedirect?: boolean;
            fields?: string;
            icon?: string | React.ReactNode;
            isDisabled?: boolean;
            language?: string;
            onClick?(event: React.MouseEvent<HTMLDivElement>): void;
            reAuthenticate?: boolean;
            redirectUri?: string;
            scope?: string;
            size?: "small" | "medium" | "metro";
            textButton?: string;
            typeButton?: string;
            version?: string;
            xfbml?: boolean;
            isMobile?: boolean;
            tag?: Node | React.Component<any>;
            render(props: RenderProps): void;
        }
    
        interface ReactFacebookFailureResponse {
            status?: string;
        }
    
        interface ReactFacebookLoginInfo {
            id: string;
            accessToken: string;
            name?: string;
            email?: string;
        }
    
        interface ReactFacebookLoginState {
            isSdkLoaded?: boolean;
            isProcessing?: boolean;
        }
    
        export default class ReactFacebookLogin extends React.Component<
            ReactFacebookLoginProps,
            ReactFacebookLoginState
            > {}
    }
    

    【讨论】:

    • 如果使用可能需要加returnScopes?: boolean;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2016-12-30
    • 2019-03-21
    • 2017-08-13
    • 2019-04-14
    • 2013-04-16
    相关资源
    最近更新 更多