Skip to content

Commit dfdc324

Browse files
committed
Update README.md
1 parent dbb5451 commit dfdc324

File tree

1 file changed

+54
-1
lines changed

1 file changed

+54
-1
lines changed

README.md

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,60 @@ Nitro Modules are highly efficient native modules exposed with a statically comp
2020

2121
## Usage
2222

23-
🤔
23+
### 1. Create a TypeScript spec
24+
25+
The TypeScript spec is the single source of truth. It's interfaces, enums or other type declarations will be converted to C++ (or Swift/Kotlin) types using a code generator.
26+
27+
```ts
28+
export interface MathsModule {
29+
readonly pi: number
30+
multiply: (a: number, b: number) => number
31+
subtract: (a: number, b: number) => number
32+
add: (a: number, b: number) => number
33+
}
34+
```
35+
36+
### 2. Implement the native interface
37+
38+
In C++:
39+
40+
```cpp
41+
class MathsModule: public MathsModuleSpec {
42+
public:
43+
double getPi() override { return PI; }
44+
45+
double multiply(double a, double b) override { return a * b; }
46+
double subtract(double a, double b) override { return a - b; }
47+
double add(double a, double b) override { return a + b; }
48+
};
49+
```
50+
51+
In Swift:
52+
53+
```swift
54+
class MathsModule: MathsModuleSpec {
55+
var Pi: Double {
56+
return .pi
57+
}
58+
59+
func multiply(a: Double, b: Double) -> Double { return a * b }
60+
func subtract(a: Double, b: Double) -> Double { return a - b }
61+
func add(a: Double, b: Double) -> Double { return a + b }
62+
}
63+
```
64+
65+
In Kotlin:
66+
67+
```kotlin
68+
class MathsModule: MathsModuleSpec {
69+
val Pi: Double
70+
get() = PI
71+
72+
fun multiply(a: Double, b: Double): Double { return a * b }
73+
fun subtract(a: Double, b: Double): Double { return a - b }
74+
fun add(a: Double, b: Double): Double { return a + b }
75+
}
76+
```
2477

2578
## Platforms
2679

0 commit comments

Comments
 (0)