Ich versuche, die aktuell angezeigte URL von einer Angular2 Typescript Chrome Extension abzurufen. Ich habe this gelesen, um die URL zu erhalten, und this in Bezug darauf, wie Js-Funktionen in Ts aufgerufen werden. Ich setze allowJs in meiner tsconfig.json auch auf true.Den aktuellen Domänennamen von Chrome in Typescript abrufen
Hier ist mein Code:
ngOnInit(){
declare var tabs = chrome.tabs.query({params...},function(tabs) {
return tabs[0];
});
console.log(tabs());
}
Diese nicht kompiliert, wenn ich das Protokoll entfernen.
Ich versuchte auch nicht function expression call zu verwenden:
declare chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT},
function(tabs){}
);
Aber es überhaupt nicht funktionieren. Ich fragte mich, ob es async verwandt sein könnte, weil der Code in der OnInit ist.
Irgendwelche Ideen?
Danke!
Warum verwenden Sie 'declare'? Ich bin mir ziemlich sicher, dass es nicht das ist, was du willst. Das Deklarieren einer Variablen bedeutet "es gibt eine Variable mit diesem Namen und Typ, aber sie ist woanders definiert, also keine Sorge, lieber Compiler". Aber in Ihrem Beispiel ordnen Sie den Wert genau dort zu. –
Nun, einer der Links empfiehlt, dies zu tun, wenn Js Funktionen in Ts aufgerufen werden. – Stanislasdrg
Es gibt nicht wirklich so etwas wie "js von ts aufrufen" als Typoskript ist Javascript. Das Problem ist, dass der Compiler 'chrome.tabs.query' nicht erkennt, weil er nicht dafür definiert ist, also können Sie entweder das deklarieren oder eine Definitionsdatei verwenden, die es für Sie definiert. ABER wenn Sie das Ergebnis einer solchen Funktion einer Variablen zuweisen, sollte diese Variable nicht "deklariert" werden, sondern sollte tatsächlich da sein. –