Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No TypeScript support #12

Closed
Vovan-VE opened this issue Jan 27, 2020 · 4 comments
Closed

No TypeScript support #12

Vovan-VE opened this issue Jan 27, 2020 · 4 comments

Comments

@Vovan-VE
Copy link
Contributor

Hello!

Please, add TypeScript support.

Currently I just started with this package and documentation, and at the moment I have to add following minimal declarations to let app to work:

declare module 'i18next-icu' {
  import { ThirdPartyModule } from 'i18next';

  export interface LocaleData {}

  export interface IcuConfig {
    localeData: LocaleData | LocaleData[];
  }

  export interface IcuInstance extends ThirdPartyModule {}

  interface IcuConstructor {
    new (config?: IcuConfig): IcuInstance;
  }

  const ICU: IcuConstructor;
  export default ICU;
}

declare module 'i18next-icu/locale-data' {
  import { LocaleData } from 'i18next-icu';

  declare const localesData: LocaleData[];
  export default localesData;
}

declare module 'i18next-icu/locale-data/en' {
  import { LocaleData } from 'i18next-icu';
  declare const localeData: LocaleData;
  export default localeData;
}
@jamuhl
Copy link
Member

jamuhl commented Jan 27, 2020

Feel free to provide a PR to add typescript support

@Vovan-VE
Copy link
Contributor Author

I would be glad to, but currently I'm not much familiar with the package. I'll try few later.

@dyniper
Copy link

dyniper commented Jan 27, 2020

This the typing i have been using if you want to create a PR for it:

declare module "i18next-icu/locale-data/af";
declare module "i18next-icu/locale-data/cs";
declare module "i18next-icu/locale-data/fur";
declare module "i18next-icu/locale-data/ja";
declare module "i18next-icu/locale-data/ksh";
declare module "i18next-icu/locale-data/ms";
declare module "i18next-icu/locale-data/pl";
declare module "i18next-icu/locale-data/smj";
declare module "i18next-icu/locale-data/ug";
declare module "i18next-icu/locale-data/agq";
declare module "i18next-icu/locale-data/cu";
declare module "i18next-icu/locale-data/fy";
declare module "i18next-icu/locale-data/jbo";
declare module "i18next-icu/locale-data/ku";
declare module "i18next-icu/locale-data/mt";
declare module "i18next-icu/locale-data/prg";
declare module "i18next-icu/locale-data/smn";
declare module "i18next-icu/locale-data/uk";
declare module "i18next-icu/locale-data/ak";
declare module "i18next-icu/locale-data/cy";
declare module "i18next-icu/locale-data/ga";
declare module "i18next-icu/locale-data/jgo";
declare module "i18next-icu/locale-data/kw";
declare module "i18next-icu/locale-data/mua";
declare module "i18next-icu/locale-data/ps";
declare module "i18next-icu/locale-data/sms";
declare module "i18next-icu/locale-data/ur";
declare module "i18next-icu/locale-data/am";
declare module "i18next-icu/locale-data/da";
declare module "i18next-icu/locale-data/gd";
declare module "i18next-icu/locale-data/ji";
declare module "i18next-icu/locale-data/ky";
declare module "i18next-icu/locale-data/my";
declare module "i18next-icu/locale-data/pt";
declare module "i18next-icu/locale-data/sn";
declare module "i18next-icu/locale-data/uz";
declare module "i18next-icu/locale-data/ar";
declare module "i18next-icu/locale-data/dav";
declare module "i18next-icu/locale-data/gl";
declare module "i18next-icu/locale-data/jmc";
declare module "i18next-icu/locale-data/lag";
declare module "i18next-icu/locale-data/mzn";
declare module "i18next-icu/locale-data/qu";
declare module "i18next-icu/locale-data/so";
declare module "i18next-icu/locale-data/vai";
declare module "i18next-icu/locale-data/ars";
declare module "i18next-icu/locale-data/de";
declare module "i18next-icu/locale-data/gsw";
declare module "i18next-icu/locale-data/jv";
declare module "i18next-icu/locale-data/lb";
declare module "i18next-icu/locale-data/nah";
declare module "i18next-icu/locale-data/rm";
declare module "i18next-icu/locale-data/sq";
declare module "i18next-icu/locale-data/ve";
declare module "i18next-icu/locale-data/as";
declare module "i18next-icu/locale-data/dje";
declare module "i18next-icu/locale-data/gu";
declare module "i18next-icu/locale-data/jw";
declare module "i18next-icu/locale-data/lg";
declare module "i18next-icu/locale-data/naq";
declare module "i18next-icu/locale-data/rn";
declare module "i18next-icu/locale-data/sr";
declare module "i18next-icu/locale-data/vi";
declare module "i18next-icu/locale-data/asa";
declare module "i18next-icu/locale-data/dsb";
declare module "i18next-icu/locale-data/guw";
declare module "i18next-icu/locale-data/ka";
declare module "i18next-icu/locale-data/lkt";
declare module "i18next-icu/locale-data/nb";
declare module "i18next-icu/locale-data/ro";
declare module "i18next-icu/locale-data/ss";
declare module "i18next-icu/locale-data/vo";
declare module "i18next-icu/locale-data/ast";
declare module "i18next-icu/locale-data/dua";
declare module "i18next-icu/locale-data/guz";
declare module "i18next-icu/locale-data/kab";
declare module "i18next-icu/locale-data/ln";
declare module "i18next-icu/locale-data/nd";
declare module "i18next-icu/locale-data/rof";
declare module "i18next-icu/locale-data/ssy";
declare module "i18next-icu/locale-data/vun";
declare module "i18next-icu/locale-data/az";
declare module "i18next-icu/locale-data/dv";
declare module "i18next-icu/locale-data/gv";
declare module "i18next-icu/locale-data/kaj";
declare module "i18next-icu/locale-data/lo";
declare module "i18next-icu/locale-data/nds";
declare module "i18next-icu/locale-data/ru";
declare module "i18next-icu/locale-data/st";
declare module "i18next-icu/locale-data/wa";
declare module "i18next-icu/locale-data/bas";
declare module "i18next-icu/locale-data/dyo";
declare module "i18next-icu/locale-data/ha";
declare module "i18next-icu/locale-data/kam";
declare module "i18next-icu/locale-data/lrc";
declare module "i18next-icu/locale-data/ne";
declare module "i18next-icu/locale-data/rw";
declare module "i18next-icu/locale-data/sv";
declare module "i18next-icu/locale-data/wae";
declare module "i18next-icu/locale-data/be";
declare module "i18next-icu/locale-data/dz";
declare module "i18next-icu/locale-data/haw";
declare module "i18next-icu/locale-data/kcg";
declare module "i18next-icu/locale-data/lt";
declare module "i18next-icu/locale-data/nl";
declare module "i18next-icu/locale-data/rwk";
declare module "i18next-icu/locale-data/sw";
declare module "i18next-icu/locale-data/wo";
declare module "i18next-icu/locale-data/bem";
declare module "i18next-icu/locale-data/ebu";
declare module "i18next-icu/locale-data/he";
declare module "i18next-icu/locale-data/kde";
declare module "i18next-icu/locale-data/lu";
declare module "i18next-icu/locale-data/nmg";
declare module "i18next-icu/locale-data/sah";
declare module "i18next-icu/locale-data/syr";
declare module "i18next-icu/locale-data/xh";
declare module "i18next-icu/locale-data/bez";
declare module "i18next-icu/locale-data/ee";
declare module "i18next-icu/locale-data/hi";
declare module "i18next-icu/locale-data/kea";
declare module "i18next-icu/locale-data/luo";
declare module "i18next-icu/locale-data/nn";
declare module "i18next-icu/locale-data/saq";
declare module "i18next-icu/locale-data/ta";
declare module "i18next-icu/locale-data/xog";
declare module "i18next-icu/locale-data/bg";
declare module "i18next-icu/locale-data/el";
declare module "i18next-icu/locale-data/hr";
declare module "i18next-icu/locale-data/khq";
declare module "i18next-icu/locale-data/luy";
declare module "i18next-icu/locale-data/nnh";
declare module "i18next-icu/locale-data/sbp";
declare module "i18next-icu/locale-data/te";
declare module "i18next-icu/locale-data/yav";
declare module "i18next-icu/locale-data/bh";
declare module "i18next-icu/locale-data/en";
declare module "i18next-icu/locale-data/hsb";
declare module "i18next-icu/locale-data/ki";
declare module "i18next-icu/locale-data/lv";
declare module "i18next-icu/locale-data/no";
declare module "i18next-icu/locale-data/sdh";
declare module "i18next-icu/locale-data/teo";
declare module "i18next-icu/locale-data/yi";
declare module "i18next-icu/locale-data/bm";
declare module "i18next-icu/locale-data/eo";
declare module "i18next-icu/locale-data/hu";
declare module "i18next-icu/locale-data/kk";
declare module "i18next-icu/locale-data/mas";
declare module "i18next-icu/locale-data/nqo";
declare module "i18next-icu/locale-data/se";
declare module "i18next-icu/locale-data/th";
declare module "i18next-icu/locale-data/yo";
declare module "i18next-icu/locale-data/bn";
declare module "i18next-icu/locale-data/es";
declare module "i18next-icu/locale-data/hy";
declare module "i18next-icu/locale-data/kkj";
declare module "i18next-icu/locale-data/mer";
declare module "i18next-icu/locale-data/nr";
declare module "i18next-icu/locale-data/seh";
declare module "i18next-icu/locale-data/ti";
declare module "i18next-icu/locale-data/yue";
declare module "i18next-icu/locale-data/bo";
declare module "i18next-icu/locale-data/et";
declare module "i18next-icu/locale-data/id";
declare module "i18next-icu/locale-data/kl";
declare module "i18next-icu/locale-data/mfe";
declare module "i18next-icu/locale-data/nso";
declare module "i18next-icu/locale-data/ses";
declare module "i18next-icu/locale-data/tig";
declare module "i18next-icu/locale-data/zgh";
declare module "i18next-icu/locale-data/br";
declare module "i18next-icu/locale-data/eu";
declare module "i18next-icu/locale-data/ig";
declare module "i18next-icu/locale-data/kln";
declare module "i18next-icu/locale-data/mg";
declare module "i18next-icu/locale-data/nus";
declare module "i18next-icu/locale-data/sg";
declare module "i18next-icu/locale-data/tk";
declare module "i18next-icu/locale-data/zh";
declare module "i18next-icu/locale-data/brx";
declare module "i18next-icu/locale-data/ewo";
declare module "i18next-icu/locale-data/ii";
declare module "i18next-icu/locale-data/km";
declare module "i18next-icu/locale-data/mgh";
declare module "i18next-icu/locale-data/ny";
declare module "i18next-icu/locale-data/sh";
declare module "i18next-icu/locale-data/tl";
declare module "i18next-icu/locale-data/zu";
declare module "i18next-icu/locale-data/bs";
declare module "i18next-icu/locale-data/fa";
declare module "i18next-icu/locale-data/in";
declare module "i18next-icu/locale-data/kn";
declare module "i18next-icu/locale-data/mgo";
declare module "i18next-icu/locale-data/nyn";
declare module "i18next-icu/locale-data/shi";
declare module "i18next-icu/locale-data/tn";
declare module "i18next-icu/locale-data/ca";
declare module "i18next-icu/locale-data/ff";
declare module "i18next-icu/locale-data/index";
declare module "i18next-icu/locale-data/ko";
declare module "i18next-icu/locale-data/mk";
declare module "i18next-icu/locale-data/om";
declare module "i18next-icu/locale-data/si";
declare module "i18next-icu/locale-data/to";
declare module "i18next-icu/locale-data/ce";
declare module "i18next-icu/locale-data/fi";
declare module "i18next-icu/locale-data/is";
declare module "i18next-icu/locale-data/kok";
declare module "i18next-icu/locale-data/ml";
declare module "i18next-icu/locale-data/or";
declare module "i18next-icu/locale-data/sk";
declare module "i18next-icu/locale-data/tr";
declare module "i18next-icu/locale-data/cgg";
declare module "i18next-icu/locale-data/fil";
declare module "i18next-icu/locale-data/it";
declare module "i18next-icu/locale-data/ks";
declare module "i18next-icu/locale-data/mn";
declare module "i18next-icu/locale-data/os";
declare module "i18next-icu/locale-data/sl";
declare module "i18next-icu/locale-data/ts";
declare module "i18next-icu/locale-data/chr";
declare module "i18next-icu/locale-data/fo";
declare module "i18next-icu/locale-data/iu";
declare module "i18next-icu/locale-data/ksb";
declare module "i18next-icu/locale-data/mo";
declare module "i18next-icu/locale-data/pa";
declare module "i18next-icu/locale-data/sma";
declare module "i18next-icu/locale-data/twq";
declare module "i18next-icu/locale-data/ckb";
declare module "i18next-icu/locale-data/fr";
declare module "i18next-icu/locale-data/iw";
declare module "i18next-icu/locale-data/ksf";
declare module "i18next-icu/locale-data/mr";
declare module "i18next-icu/locale-data/pap";
declare module "i18next-icu/locale-data/smi";
declare module "i18next-icu/locale-data/tzm";

declare module "i18next-icu" {
  import * as i18next from "i18next";

  namespace I18NextIcu {
    type LocaleData = any | any[];

    interface InitOptions {
      localeData: LocaleData | LocaleData[];
    }

    // prettier-ignore
    interface IcuFormats {
      number?: {
        [styleName: string]: {
          style?: "currency" | "percent" | "decimal";
          currency?: string;
          currencyDisplay?: "name" | "symbol" | "code";
          minimumIntegerDigits?: 1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21;
          minimumFractionDigits?: 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20;
          maximumFractionDigits?: 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20;
          minimumSignificantDigits?: 1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21;
          maximumSignificantDigits?: 1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21;
          [key: string]: IcuFormats.number;
        }
      },
      date?: {
        [styleName: string]: {
          weekday?: "narrow" | "short" | "long";
          era?: "narrow" | "short" | "long";
          year?: "numeric" | "2-digit";
          month?: "numeric" | "2-digit" | "narrow" | "short" | "long";
          day?: "numeric" | "2-digit";
          hour?: "numeric" | "2-digit";
          minute?: "numeric" | "2-digit";
          second?: "numeric" | "2-digit";
          timeZoneName?: "short" | "long";
          timeZone?: "UTC" | string;
        }
      },
      time?: {
        [styleName: string]: {
          hour?: "numeric" | "2-digit";
          minute?: "numeric" | "2-digit";
          second?: "numeric" | "2-digit";
          timeZoneName?: "short" | "long";
          timeZone?: "UTC" | string;
        }
      }
    }
  }

  class I18NextIcu {
    constructor(options: { formats: I18NextIcu.IcuFormats });
    init(i18next: i18next.i18n, options: I18NextIcu.InitOptions): void;
    addLocaleData(data: I18NextIcu.LocaleData): void;
    type: "i18nFormat";
  }

  export = I18NextIcu;
}

@Vovan-VE
Copy link
Contributor Author

Resolved with #13.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants