Показать сообщение отдельно
  #2 (permalink)  
Старый 16.01.2019, 15:08
Интересующийся
Отправить личное сообщение для kotelok Посмотреть профиль Найти все сообщения от kotelok
 
Регистрация: 27.08.2018
Сообщений: 22

Получился следующий вариант - экспорт нэймспейса, внутри нэймспейса экспорт тех классов, что требуются снаружи и приватное описание тех классов, что нужны только для локального использования.

Например:
export namespace HintApi {

    @Injectable()
    export class HintService {
        constructor(private httpClient: HttpClient, private appConfig: AppConfig) {

        }

        searchCompanyByPartial(searchText: string): Observable<SearchCompanyByPartialResponse> {
            var request = new SearchCompanyByPartialRequest(searchText);

            return this.httpClient.post<SearchCompanyByPartialResponse>("hint/searchCompanyByPartial", request);
        }
    }

    class SearchCompanyByPartialRequest {
        searchText: string;

        constructor(searchText: string) {
            this.searchText = searchText;
        }
    }

    class SearchCompanyByPartialResponse {
        public companies: SharedDto.Company[];
    }


А в тех местах, где требуется использовать данный набор функционала:
import { HintApi }  from "../../../api/hint.api"
  constructor(
    private fb: FormBuilder,
    private apiHintService: HintApi.HintService) {
        ....

Если в нужном нэймспейсе есть какие-то классы, описывающие структуры данных, то к ним обращение идёт так же через импортированный алиас:
var someHintDto = new HintApi.SomeDto();
Ответить с цитированием