Skip to content

Commit d718fb3

Browse files
authored
fix: infer each property type individually (#9)
Add type inference for all properties of an object
2 parents 3be4da4 + c34f27c commit d718fb3

File tree

5 files changed

+13
-6
lines changed

5 files changed

+13
-6
lines changed

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@codelytv/primitives-type",
3-
"version": "1.0.5",
3+
"version": "1.0.6",
44
"description": "Type entity primitives from value objects",
55
"keywords": [
66
"typescript",

src/Primitives.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ type ValueObjectValue<T> = T extends PrimitiveTypes
1818
: T extends Array<infer U>
1919
? Array<ValueObjectValue<U>>
2020
: T extends { [K in keyof Properties<T>]: infer U }
21-
? { [K in keyof Properties<T>]: ValueObjectValue<U> }
21+
? { [K in keyof Properties<T>]: ValueObjectValue<Properties<T>[K]> }
2222
: never;
2323

2424
export type Primitives<T> = {

tests/Address.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
1-
import { Primitives } from "../src/Primitives";
1+
import { Primitives } from "../src";
22
import { City } from "./City";
33
import { Street } from "./Street";
44

55
export class Address {
6-
constructor(readonly street: Street, readonly city: City) {}
6+
constructor(
7+
readonly street: Street,
8+
readonly city: City,
9+
readonly number: number
10+
) {}
711

812
toPrimitives(): Primitives<Address> {
913
return {
1014
street: this.street.value,
1115
city: this.city.value,
16+
number: this.number,
1217
};
1318
}
1419
}

tests/Primitives.test.ts

+2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ describe("Primitives", () => {
3636
readonly address: {
3737
readonly city: string;
3838
readonly street: string;
39+
readonly number: number;
3940
};
4041
};
4142

@@ -49,6 +50,7 @@ describe("Primitives", () => {
4950
readonly addresses: {
5051
readonly city: string;
5152
readonly street: string;
53+
readonly number: number;
5254
}[];
5355
};
5456

0 commit comments

Comments
 (0)