Как подключить интерфейс для класса из файла *.d.ts?

Нужно вынести интерфейсы из Model.ts в файл Model.d.ts

Сгенерировал Model.d.ts командой

tsc Model.ts --declaration

И подключаю этот файл в Model.ts

/// <reference path='./Model.d.ts' />

удаляю, например, у функции тип ISettings

было

public updateSettings(settings: ISettings) {
  this.settings = settings;
}

стало

public updateSettings(settings) {
  this.settings = settings;
}

и получаю ошибку на параметре settings

Parameter 'settings' implicitly has an 'any' type. ts(7006)

Model.d.ts

/// <reference path="../RangeSlider/types.d.ts" />
import {
  ISettings
} from '../RangeSlider/types';

export declare class Model {
  settings: ISettings;
  minValue: number;
  maxValue: number;
  isTwoRunners: boolean;
  isScaleVisible: boolean;
  isVertical: boolean;
  isTooltipsVisible: boolean;
  valueFrom: number;
  valueTo: number;
  step: number;

  constructor(settings: ISettings);

  private static validateSettings;
  private getThumbValue;
  getSettings(): ISettings;
  updateSettings(settings: ISettings): void;
}

Model.ts

/// <reference path='./Model.d.ts' />
import {
  ISettings,
  ThumbName
} from '../RangeSlider/types';

export class Model {
  settings: ISettings;

  minValue: number;
  maxValue: number;
  isTwoRunners: boolean;
  isScaleVisible: boolean;
  isVertical: boolean;
  isTooltipsVisible: boolean;
  valueFrom: number;
  valueTo: number;
  step: number;

  constructor(settings: ISettings) {
    Model.validateSettings(settings);
    this.settings = settings;

    // default options
    this.minValue = this.settings.min;
    this.maxValue = this.settings.max;
    this.isTwoRunners = this.settings.isTwoRunners;
    this.isScaleVisible = this.settings.isScaleVisible;
    this.isVertical = this.settings.isVertical;
    this.isTooltipsVisible = this.settings.isTooltipsVisible;

    this.valueFrom = this.getThumbValue(this.settings, 'from');
    this.valueTo = this.getThumbValue(this.settings, 'to');

    this.step = settings.step;
  }

  private static validateSettings(settings: ISettings): void {
    if (settings.min >= settings.max) {
      throw new Error("'max' must be greater than 'min'");
    }
    if (settings.valueFrom < settings.min) {
      throw new Error("'valueFrom' must be greater than 'min'");
    }
    if (settings.valueFrom > settings.valueTo) {
      throw new Error("'valueFrom' must be less than 'valueTo'");
    }
    if (settings.valueTo > settings.max) {
      throw new Error("'valueTo' must be less than 'max'");
    }
    if (settings.max - settings.min < settings.step) {
      throw new Error(`'step' must be less than ${settings.max - settings.min}`);
    }
    if (settings.valueTo - settings.valueFrom < settings.step) {
      throw new Error('distanse between thumbs must be equal or greater than step');
    }
  }

  private getThumbValue(settings: ISettings, thumbName: ThumbName): number {
    return thumbName === 'from' ? settings.valueFrom : settings.valueTo;
  }

  public getSettings(): ISettings {
    return {
      // settings
      min: this.minValue,
      max: this.maxValue,
      isTwoRunners: this.isTwoRunners,
      isScaleVisible: this.isScaleVisible,
      isVertical: this.isVertical,
      isTooltipsVisible: this.isTooltipsVisible,
      valueFrom: this.valueFrom,
      valueTo: this.valueTo,
      step: this.step,
    };
  }

  public updateSettings(settings) {
    this.settings = settings;
  }
}


Ответы (0 шт):