2017-07-10 3 views
0

Ich möchte einige Zeichenketten externalisieren aber dennoch irgendeine Form der Zeichenkettensubstitution benutzen.Externalize Zeichenketten und verwenden Sie einen Formatierer, um Variablen in Zeichenkette zu ersetzen

In einigen meiner node basierte Projekte habe ich verwendet:

var format = require('string-format'); 

format(Constants.COUNTRY_WEATHER_ENDPOINT, { 
    country: country 
}) 

Allerdings In Typescript, ich habe so etwas wie dies versucht ..

Fehler:

Cannot find name 'country'.at line 18 col 66 in repo/src/app/constants.ts 

Constants.ts

export class Constants { 
    public static COUNTRY_WEATHER_ENDPOINT = `/api/country/${country}/weather`; 
} 

TestService.ts

import { Constants } from './constants'; 

export class TestService { 
    constructor(private $http) { } 

    public getWeather(country) { 
    let url = Constants.COUNTRY_WEATHER_ENDPOINT; 
    return this.$http.get(
     url, 
     .then(response => response); 
    } 
} 

TestService.$inject = ['$http']; 

Antwort

1

Pfeil Funktionen:

export const Constants: { readonly [name: string]: (key: string) => string } = { 
    countryWeatherEndpoint: country => `/api/country/${country}/weather` 
} 

Dann tun:

import { Constants } from "./constants"; 
// ... 
const url = Constants.countryWeatherEndpoint(country); 
// use your url 
+1

eine Idee, wie man umgehen 'Parameter 'Land' implizit hat eine 'any' Art. Ohne alle vars am Anfang der Datei zu deklarieren – bobbyrne01

+0

Ich habe das Beispiel geändert: Jetzt funktioniert es mit' noImplicitAny'. – ideaboxer

+0

Sie können '{readonly [name: string]: (key: string) => string}' nehmen und es woanders als Typ definieren: z. 'type ConstantsType = {readonly [name: string]: (schlüssel: string) => string}'. Zum Beispiel in einer Datei, die Sie importieren können, wo immer Sie sie brauchen. Dann können Sie 'const Konstants: ConstantsType = {...}' schreiben – ideaboxer

0

String-Interpolation in Typoskript braucht Ihre Variable country existieren, wenn Klasse geladen wird. Wenn Sie später die konstante Zeichenfolge formatieren möchten, müssen Sie normale Anführungszeichen (einfach oder doppelt) verwenden und format in Ihrem Dienst aufrufen.

Verwandte Themen