Error instantiating Typescript Class (Error not a constructor) -


i new typescript , having trouble basic class instantiation.

i have namespace recordsservice class record declared inside of it. want able create records within recordsservice, access them via public methods other methods , such.

export namespace recordsservice {      let records: array<record> = new array();      function init () {         let record1 = new record(new date(), 1);     }     init();      export function getallrecords() {         return records;     }      class record {          constructor (public date: date, public id: number) {             this.date = date;             this.id = id;         }     } } 

the above doesn't throw transpiling error when ran console error below

typeerror: record not constructor(…)

line errors let record1 = new record(new date(), 1); how can create new record in case?

plunker, view console log see error: https://plnkr.co/edit/fnk8b1zwa5hl3i7wantq?p=preview

you need move record class above init function:

class record {     constructor (public date: date, public id: number) {         this.date = date;         this.id = id;     } }  let records: array<record> = new array();  function init () {     let record1 = new record(new date(), 1); } init(); 

or call init function after definition of record:

let records: array<record> = new array();  function init () {     let record1 = new record(new date(), 1); }  export function getallrecords() {     return records; }  class record {     constructor (public date: date, public id: number) {         this.date = date;         this.id = id;     } }  init(); 

the reason why happens javascript interpreted language, interpreter parses code line after other, , reaches init() part (in original code) before interpreted record class.

the content of init function isn't interpreted until execute function why it's safe have before class definition , execute afterwards.

also, if you're doing this:

constructor (public date: date, public id: number) 

then there's no need this:

this.date = date; this.id = id; 

it's either:

class record {     constructor (public date: date, public id: number) {} } 

or

class record {     public date: date;     public id: number;      constructor (date: date, id: number) {         this.date = date;         this.id = id;     } } 

Comments

Popular posts from this blog

sql - invalid in the select list because it is not contained in either an aggregate function -

Angularjs unit testing - ng-disabled not working when adding text to textarea -

How to start daemon on android by adb -