Skip to content

Commit

Permalink
fix: Compilation error for nested repeated fields with useOptionals=a…
Browse files Browse the repository at this point in the history
…ll (#1112)

The TS code generated for the following protobuf code with the `useOptionals=all` parameter does not compile.

```proto
syntax = "proto3";

import "google/protobuf/wrappers.proto";

message NestedList { repeated google.protobuf.StringValue a_string = 1; }

message Example { NestedList list = 1; }
```

The problem lies in the `decode` function not taking into account that the `value` after decoding could also be `undefined`. Therefore the following generated line:

```ts
message.aString!.push(StringValue.decode(reader, reader.uint32()).value);
```

results in the following TS compilation error:

```
Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
  Type 'undefined' is not assignable to type 'string'.ts(2345)
```

The fix is to push the decoded element to the array only if it's a truthy value.
  • Loading branch information
vecerek committed Sep 29, 2024
1 parent ffacf3a commit 5d2ffd3
Show file tree
Hide file tree
Showing 5 changed files with 860 additions and 5 deletions.
Loading

0 comments on commit 5d2ffd3

Please sign in to comment.