0.6.0 • Published 5 years ago
@kogai/typed_i18n v0.6.0
typed_i18n
Generate strictly typed definition of TFunction from own i18next dictionary file.
It generate from
{
"en": {
"translation": {
"foo": {
"bar": "some text",
"buzz": 999
}
}
}
}
as
// @flow
declare function t(_: "foo"): {
+bar: string,
+buzz: number
};
declare function t(_: "foo.bar"): string;
declare function t(_: "foo.buzz"): number;
export type TFunction = typeof t;
or
declare namespace typed_i18n {
interface TFunction {
t(_: "foo"): {
+bar: string,
+buzz: number,
};
t(_: "foo.bar"): string;
t(_: "foo.buzz"): number;
}
}
export = typed_i18n;
then if you use TFunction like below, type-checker warn you function call by invalid path
// @flow
import type { TFunction } from "./locale.translation"; // Definition file generated
declare var t: TFunction;
// Those are ok
const x: { bar: string, buzz: number } = t("foo");
const x1: string = x.bar;
const x2: number = x.buzz;
// Expect error
const x3 = x.buzzz;
// Expect error
const y = t("fooo");
// Those are also strictly typed too
const z1: string = t("foo.bar");
const z2: number = t("foo.buzz");
Usage
# Basic usage
$ typed_i18n -i path/to/your.json -o path/to/out/dir
# Support also typescript
$ typed_i18n -i path/to/your.json -o path/to/out/dir -l typescript
# You can specify namespaces instead of default "translation"
$ typed_i18n -i path/to/your.json -o path/to/out/dir -n translate -n my-namespace -n other-namespace
0.6.0
5 years ago
0.5.15
6 years ago
0.5.14
6 years ago
0.5.13
6 years ago
0.5.12
6 years ago
0.5.11
6 years ago
0.5.10
6 years ago
0.5.9
6 years ago
0.5.8
6 years ago
0.5.7
6 years ago
0.5.6
6 years ago
0.5.5
6 years ago
0.5.4
6 years ago
0.5.3
6 years ago
0.5.2
6 years ago
0.5.1
6 years ago
0.5.0
6 years ago
0.4.8
6 years ago
0.4.6
6 years ago
0.4.7
6 years ago
0.4.5
7 years ago
0.4.4
7 years ago
0.4.3
7 years ago
0.4.1
7 years ago
0.4.0
7 years ago
0.3.7
7 years ago
0.3.6
7 years ago
0.3.5
7 years ago
0.3.4
7 years ago
0.3.3
7 years ago
0.3.2
7 years ago
0.3.1
7 years ago
0.3.0
7 years ago
0.2.4
7 years ago
0.2.3
7 years ago
0.2.2
7 years ago
0.2.1
7 years ago
0.2.0
7 years ago
0.1.3
7 years ago
0.1.2
7 years ago
0.1.1
7 years ago
0.1.0
7 years ago
0.0.7
7 years ago
0.0.6
7 years ago
0.0.5
7 years ago
0.0.4
7 years ago
0.0.3
7 years ago
0.0.2
7 years ago