2016-03-27 12 views
0

Ich habe vor kurzem eine ähnliche Frage gestellt und eine Menge Hilfe bekommen, aber selbst mit der Antwort habe ich Probleme mit diesem Code.Typoskript - Schwierigkeit "ausdehnt" IGnularStatic

Ich habe geschrieben - in typescript - ein kleiner Service mit google api (gapi) zu verwenden, und eine Schnittstelle mit ihm zu gehen, da dies aufgeführt in meinem Code; Jetzt

gapiService.ts

class GoogleAuthenticationService implements IGoogleAuthenticationService { 
    // ... 
} 

interface IGoogleAuthenticationService extends ng.IServiceProvider { } 

, kann ich sie so verwenden, aber für OCD Zwecke, möchte ich sie an den angular Namespace/Modul befestigen Teil der ng Laden zu sein. So konnte ich sie nennen ...

ng.GoogleAuthenticationService 
ng.IGoogleAuthenticationService 

Ich dachte, das würde funktionieren, aber ich halte den Fehler bekommen, dass sie entweder nicht sie oder einige andere Fehler finden. Ich habe durch die folgende Liste von Fehlern ...

  • Property 'GoogleAuthenticationService' does not exist on type 'IAngularStatic'
  • Module 'angular' has no exported member 'IGoogleAuthenticationService'
  • An export assignment cannot be used in a module with other exported elements.

wie Jede Idee, weg zu erreichen, was ich bin mit dem Ziel für? Es macht mich verrückt.

gapiAuth.d.ts

declare module 'angular' { 
    interface IGoogleAuthenticationService{} 
    var GoogleAuthenticationService: GoogleAuthenticationService 
} 
+0

Ich denke den ganzen Code umgibt (Klasse plus Schnittstelle) wi Das 'Modul angular {}' würde funktionieren –

+0

Hier nachschlagen, [have-interface-string-string-Funktionalität] (http://stackoverflow.com/questions/36031767/have-interface-extend-string-functionality/36067378# 36067378) Ich nehme an, Sie fragen mehr oder weniger die gleiche Frage –

+0

Woah. Was ist mit den Deklarationen in eckigen Klammern? Das ist trippy - ich habe keine Ahnung, was diese bedeuten. – Ciel

Antwort

0

ng.GoogleAuthenticationService ng.IGoogleAuthenticationService

wickeln sie einfach in angular Namespace:

namespace angular { 
    class GoogleAuthenticationService implements IGoogleAuthenticationService { 
    // ... 
    } 

    interface IGoogleAuthenticationService extends ng.IServiceProvider { } 
} 
+0

Das funktioniert nicht. Es macht alle anderen Fälle von Winkelfehlern. – Ciel

+0

Ich nehme an, weil es die Definition dessen ändert, was "eckig" ist. – Ciel

+0

legen Sie sie in eine neue Datei namens 'foo.d.ts'. Ich vermute, dass Sie in eine vorhandene Datei einfügen, die bereits ein Modul ist – basarat