[Pas2js] Testing generics

warleyalex warleyalex at yahoo.com.br
Sat Oct 26 14:30:27 CEST 2019


// ---- code ---
uses
  JS, {Classes,} SysUtils, Web, Types, Math, TypInfo,
  generics.collections, generics.defaults, generics.strings, Classes; 

  {$mode objfpc}

type
  TPerson = class
  private
    FNome: String;
    procedure SetNome(const Value: String);
  public
    property Nome: String read FNome write SetNome;
  end;

{ TPerson }
procedure TPerson.SetNome(const Value: String);
begin
  FNome := Value;
end;

procedure PersonWithoutGenerics;
var
  LListaPessoa: TList; //--> Error: Generics without specialization cannot
be used as a type for a variable
  LPessoa : TPerson;
  LNomePessoa : String;

begin
  LListaPessoa := TList.Create;
  LPessoa      := TPerson.Create;
  try
    LPessoa.Nome := 'Fabio Rubim';
    LListaPessoa.Add(LPessoa);
    LNomePessoa:=  TPerson(LListaPessoa[0]).Nome;
    WriteLn(LNomePessoa);
  finally
    LPessoa.Free;
    LListaPessoa.Free;
  end;
end;

procedure PersonWithGenerics;
var
  LListaPessoas: specialize TList<TPerson>;
  LPessoa : TPerson;
  LNomePessoa : String;

begin
  LListaPessoas := specialize TList<TPerson>.Create;
  LPessoa := TPerson.Create;
  try
    LPessoa.Nome := 'Fabio Rubim';
    LListaPessoas.Add(LPessoa);
    WriteLn(LListaPessoas[0].Nome);
  finally
    LListaPessoas.Free;
  end;
end;

begin
// Your code here
 PersonWithoutGenerics;
 PersonWithGenerics;
end.
----

When I run the project I have the
generics.collections.pas:612 Uncaught TypeError: Cannot set property
'undefined' of undefined




--
Sent from: http://pas2js.38893.n8.nabble.com/


More information about the Pas2js mailing list