cardano-serialization-lib icon indicating copy to clipboard operation
cardano-serialization-lib copied to clipboard

TransactionMetadatum.as_* methods: wrong type annotation

Open klntsky opened this issue 1 year ago • 1 comments

declare export class TransactionMetadatum {
  free(): void;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionMetadatum}
   */
  static from_bytes(bytes: Uint8Array): TransactionMetadatum;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex_str
   * @returns {TransactionMetadatum}
   */
  static from_hex(hex_str: string): TransactionMetadatum;

  /**
   * @param {MetadataMap} map
   * @returns {TransactionMetadatum}
   */
  static new_map(map: MetadataMap): TransactionMetadatum;

  /**
   * @param {MetadataList} list
   * @returns {TransactionMetadatum}
   */
  static new_list(list: MetadataList): TransactionMetadatum;

  /**
   * @param {Int} int
   * @returns {TransactionMetadatum}
   */
  static new_int(int: Int): TransactionMetadatum;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionMetadatum}
   */
  static new_bytes(bytes: Uint8Array): TransactionMetadatum;

  /**
   * @param {string} text
   * @returns {TransactionMetadatum}
   */
  static new_text(text: string): TransactionMetadatum;

  /**
   * @returns {number}
   */
  kind(): number;

  /**
   * @returns {MetadataMap}
   */
  as_map(): MetadataMap;

  /**
   * @returns {MetadataList}
   */
  as_list(): MetadataList;

  /**
   * @returns {Int}
   */
  as_int(): Int;

  /**
   * @returns {Uint8Array}
   */
  as_bytes(): Uint8Array;

  /**
   * @returns {string}
   */
  as_text(): string;
}

as_* methods should return X | void (they are all partial)

klntsky avatar Jan 24 '24 21:01 klntsky

Hi @klntsky ! From wasm bingen side it is correct behavior, because as_* functions returns Result type it means you always get a non-nullable value or get an exception. In other words Result means for bingen return value or throw an exception. Yes it is not the best logic for an as_* function but it is open source project and you can contribute. But changing from Result to Option leads API breaking changes and we can accept this change only for the next major version

lisicky avatar Jan 25 '24 07:01 lisicky