Hur importerar man en TypeScript-klass i JavaScript?
Så här importerar jag app.config.ts-klassen i TypeScript och använder den. Hur importerar jag samma AppConfig-klass i en Javascript-fil (config.js) och får åtkomst till metoden getConfig?
service.ts
import { AppConfig } from '../app.config';
constructor(private http: Http, private config: AppConfig) {
this.dataURL = this.config.getConfig('restApi') + '/api/getdata/'
console.log(this.dataURL)
}
Svar #1
Jag vet inte exakt vad du frågar, så jag har delat upp det i två delar:
Om du försöker importera en Typescript-fil till en JavaScript-fil
Den bästa lösningen skulle vara att byta namn på din config.js till config.ts och behandla den som en TypeScript-fil.
d.v.s. om du har detta:
export class AppConfig {
foo: string;
bar: number;
}
Och i din config.js har du detta:
export const Config = {
foo: 'Hello World',
bar: 42
}
men jag antar att du vill ha något i stil med:
import { AppConfig } from './app.config'
export const Config: AppConfig = {
foo: 'Hello World',
bar: 42
}
Då kan du bara byta namn på config.js till config.ts. Det måste ändå vara en typescript-fil för typkontroll (om du inte sätter allowJs-regeln i tsconfig.json, men även då tror jag inte att det är smart att importera .ts-filer i .js-filer).
Om du försöker importera en Javascript-fil (eller något) dynamiskt från din URL
Att importera JavaScript-filer dynamiskt fungerar inte riktigt i webbläsaren av ett par tekniska skäl, inte minst säkerhet, men också eftersom ES6:s "import" (eller nodes "require") inte ingår i webbläsarstandarden.
Istället rekommenderar jag att du konverterar din konfiguration till en JSON-fil och använder JavaScripts inbyggda JSON.parse för att parsa den. D.v.s:
http.get(this.dataUrl).toPromise().then(response => {
let config = null;
try {
config = JSON.parse(response.data);
} catch (e) {
console.error("Couldn't parse response!");
}
this.config = new AppConfig(config); // See note
}
Eller något i den stilen.
Observera: Jag antar att du har både en kopia och en standardkonstruktor för din AppConfig-klass. Om du inte har det, kan du skapa en, skapa en parse-funktion eller något liknande.
