Как подключить интерфейс для класса из файла *.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;
}
}