reactjs - Deklarera modul för undermapp
Jag försöker skapa typer för modulen "react-facebook-login/dist/facebook-login-render-props", en del av https://github.com/keppelen/react-facebook-login. Observera att det är i en undermapp.
Jag har skapat en d.ts-fil med följande moduldeklaration:
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
> {}
}
Men det verkar som att det inte har plockats upp, eftersom jag får ett felmeddelande:
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.
Vad kan jag göra för att skriva den här filen som finns i en undermapp till ett paket?
Svar #1
Det visade sig att problemet inte var att filen låg i en undermapp.
För Googlers som letar efter lösningen, är detta vad jag slutade med:
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
> {}
}
