kod çevirisi - TypeScript Derleme Hatası Çağrı imzası olmayan bir türdeki ifadeyi çağırmak mümkün değil


aşağıdaki kodu dönüştürdükten sonra hata mesajı:

[tsc] > C:/Workarea/MyFirstAngular/src/enum/msg.ts(35,33): hata TS2349: Çağrı imzası olmayan bir türdeki ifadeyi çağırmak mümkün değil. TypeScript derlenemedi: Hata: tsc komutu şu kod ile sonlandı: 2

module MessageUtil {
    enum Morning {
    "Good Morning",
    "Great to see you!",
    "Good day.",
    "Lovely day today, isn't it?",
    "What's up?",
    "Nice to meet you",
}
}
    export class MessageData {
        private getRandomElementOfEnum(e : any):string{
            var length:number = Object.keys(e).length();  //<-- This is Line 35
            return e[Math.floor((Math.random() * length)+1)];
        }
        public getRandMorning():string {
            return this.getRandomElementOfEnum(Morning);
        }
    }
}

Biri benim tam olarak ne hatam olduğunu biliyor mu?

Kurulumum: -IDEA 14 -Node.js -Gulp -gulp-tsc -gulp-connect (Livereload için)

Cevap #1

Aynı hata mesajını alan arkadaşlar --> Kod Söz Diziminizi Kontrol Edin

Hatanı buldum. Bu Java değil.

 private getRandomElementOfEnum(e : any):string{
      var length:number = Object.keys(e).length();  //<-- This is Line 35
      return e[Math.floor((Math.random() * length)+1)];
 }

Olmalı:

    private getRandomElementOfEnum(e : any):string{
        var length:number = Object.keys(e).length;  // <--- WITHOUT ()
        return e[Math.floor((Math.random() * length)+1)];
    }

İlgili makaleler