879479119 / react-native-shadow

A SVG shadow component powered with react-native-svg,which can provide shadow on Android like iOS ^_^

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

how to support typescript?

huaiguoguo opened this issue · comments

image

i am try yarn add @types/react-native-shadow, but is not found !

无法找到模块“react-native-shadow”的声明文件。“d:/phpstudy_pro/WWW/wuzhai/app/node_modules/react-native-shadow/index.js”隐式拥有 "any" 类型。
  Try `npm install @types/react-native-shadow` if it exists or add a new declaration (.d.ts) file containing `declare module 'react-native-shadow';`

my way:

// @ts-ignore
import {BoxShadow} from 'react-native-shadow';

This is the definition file I created in my project ( under src/@types/react-native-shadow.d.ts
It might not be perfect, but it work for us. Hope it can help

declare type RNComponent<P = {}, S = {}, SS = any> = import('react').Component<P, S, SS>;
declare type RNConstructor<T> = import('react-native').Constructor<T>;
declare type RNViewProps = import('react-native').ViewProps;
declare type RNViewStyle = import('react-native').ViewStyle;

declare module 'react-native-shadow' {
  interface BoxShadowType {
    width: number,
    height: number,
    color: string,
    border: number,
    radius: number,
    opacity: number,
    x: number,
    y: number,
    style?: RNViewStyle,
  }

  interface BorderShadowType {
    width: number,
    color: string,
    border: number,
    opacity: number,
    style?: RNViewStyle,
    side: 'top' | 'bottom' | 'left' | 'right',
    inset: boolean,
  }
  export const BoxShadow : RNConstructor<RNComponent<RNViewProps & {setting?: BoxShadowType}>>;
  export const BorderShadow : RNConstructor<RNComponent<RNViewProps & {setting?: BorderShadowType}>>;
}

This is the definition file I created in my project ( under src/@types/react-native-shadow.d.ts
It might not be perfect, but it work for us. Hope it can help

declare type RNComponent<P = {}, S = {}, SS = any> = import('react').Component<P, S, SS>;
declare type RNConstructor<T> = import('react-native').Constructor<T>;
declare type RNViewProps = import('react-native').ViewProps;
declare type RNViewStyle = import('react-native').ViewStyle;

declare module 'react-native-shadow' {
  interface BoxShadowType {
    width: number,
    height: number,
    color: string,
    border: number,
    radius: number,
    opacity: number,
    x: number,
    y: number,
    style?: RNViewStyle,
  }

  interface BorderShadowType {
    width: number,
    color: string,
    border: number,
    opacity: number,
    style?: RNViewStyle,
    side: 'top' | 'bottom' | 'left' | 'right',
    inset: boolean,
  }
  export const BoxShadow : RNConstructor<RNComponent<RNViewProps & {setting?: BoxShadowType}>>;
  export const BorderShadow : RNConstructor<RNComponent<RNViewProps & {setting?: BorderShadowType}>>;
}

very thank you

Tnx, bro, saved me <3