Tilo
Tilo
Explore posts from servers
TTCTheo's Typesafe Cult
Created by Tilo on 4/19/2023 in #questions
Passing a object with readonly attributes through tRPC
I have a class (provided by a library)
import { Asset, GameMode, IMatch, MapName, Participant, PlatformRegion, PubgAPI, Roster, SeasonState, Telemetry } from '..';

export declare class Match {
private _id;
private _dateCreated;
private _duration;
private _gameMode;
private _isCustomMatch;
private _map;
private _patchVersion;
private _seasonState;
private _shardId;
private _participants;
private _rosters;
private _asset?;
private constructor();
static get(api: PubgAPI, matchId: string): Promise<Match>;
static fromDetail(matchDetail: IMatch): Match;

readonly id: string;
readonly dateCreated: Date;
readonly duration: number;
readonly gameMode: GameMode;
readonly isCustomMatch: boolean;
readonly map: MapName;
readonly patchVersion: string | undefined;
readonly seasonState: SeasonState;
readonly shardId: PlatformRegion;
readonly asset: Asset;
readonly participants: Participant[];
readonly rosters: Roster[];

getParticipantById(id: string): Participant | undefined;
getParticipantByName(name: string): Participant | undefined;

getWinners(): Participant[];
getTelemetry(api: PubgAPI): Promise<Telemetry>;
}
import { Asset, GameMode, IMatch, MapName, Participant, PlatformRegion, PubgAPI, Roster, SeasonState, Telemetry } from '..';

export declare class Match {
private _id;
private _dateCreated;
private _duration;
private _gameMode;
private _isCustomMatch;
private _map;
private _patchVersion;
private _seasonState;
private _shardId;
private _participants;
private _rosters;
private _asset?;
private constructor();
static get(api: PubgAPI, matchId: string): Promise<Match>;
static fromDetail(matchDetail: IMatch): Match;

readonly id: string;
readonly dateCreated: Date;
readonly duration: number;
readonly gameMode: GameMode;
readonly isCustomMatch: boolean;
readonly map: MapName;
readonly patchVersion: string | undefined;
readonly seasonState: SeasonState;
readonly shardId: PlatformRegion;
readonly asset: Asset;
readonly participants: Participant[];
readonly rosters: Roster[];

getParticipantById(id: string): Participant | undefined;
getParticipantByName(name: string): Participant | undefined;

getWinners(): Participant[];
getTelemetry(api: PubgAPI): Promise<Telemetry>;
}
I want to send this / the data of the readonly attributes to the client, but either while sending it directly or while destructing the object everything get's prefixed with and underscore (because it is private and readonly I think ?). The problem is if I try to access this data on the client Typescript will throw an error because the attribute is "private". How can I clone this data and or send it so that I can access it on the client ?
9 replies