2017-01-26 16 views
5

fe, mamJak ustawić domyślną wartość właściwości klasy w pliku deklaracji TypeScript?

declare class Foo extends Bar { 
    foo: number 
} 

Jak mogę oświadczyć, że foo ma wartość domyślną (wartość początkowa), powiedzmy, 60.

próbowałem

declare class Foo extends Bar { 
    foo: number = 60 
} 

ale dostaję błąd taki jak

4  foo: number = 60 
        ~~ 

path/to/something.js/Foo.d.ts/(4,28): error TS1039: Initializers are not allowed in ambient contexts. 
+4

Dlaczego musisz ustawić domyślną wartość dla zadeklarowanej klasy? –

+0

Dobra uwaga! Przypuszczam, że kod środowiska wykonawczego i tak to robi. – trusktr

+0

Haha, to powinna być odpowiedź! – trusktr

Odpowiedz

3

Program próbuje wykonać dwa wzajemnie sprzeczne zadania.

  1. Próbuje zadeklarować że klasa istnieje, ale jest rzeczywiście realizowane gdzie indziej/inaczej.
  2. Próbuje to zdefiniować tej implementacji.

Musisz określić, które z tych zadań chcesz wykonać i odpowiednio dostosować swój program, usuwając modyfikator inicjatora lub declare.

-3

Potrzebujesz konstruktora w celu ustawienia d Wartości efault do właściwości klasy.

Spróbuj tego:

declare class Foo extends Bar { 
    foo: number; 
    constructor(){ 
    this.foo = 60; 
    } 
} 

UPDATE: Po zrobieniu bliżej na fragmencie kodu zauważyłem używasz declare słów kluczowych, robi tak, po prostu definiuje typ klasy i ten nie wymaga żadnej implementacji.

UPDATE 2: Konstruktor klasy nie jest konieczne do tego, można zainicjować swoje właściwości z lub bez niej.

Jeśli usuniesz słowo kluczowe, zadeklaruj, że powinno działać poprawnie.

class Foo extends Bar { 
     foo: number; 
     constructor(){ 
     this.foo = 60; 
     } 
    } 
+1

"Potrzebujesz konstruktora, aby ustawić domyślne wartości dla właściwości klasy." To jest całkowicie fałszywe –

+0

Tak, właściwie nie potrzebujesz do tego konstruktora, tylko mój wybór konstrukcji klasowej. Aktualizuję to, ponieważ nie chcę, aby ludzie reagowali na nic haha. –

+1

Jak reagować na nic? Tworzysz fałszywe, nieistotne stwierdzenie. –

9

Spróbuj usunąć deklarację z definicji klasy. Używając deklaracji, zdefiniuje typ klasy. Typ jest zdefiniowany i nie powinien mieć implementacji.

class Foo extends Bar { 
    foo: number = 60 
} 
+1

@ Dressvoter, czy mógłbyś wyjaśnić proszę? –

+1

Nie jestem downvoter ale podejrzewam, że jest to spowodowane twoim założeniem –

Powiązane problemy