@faleaksey

Как правильно описать объект в модели на TypeScript?

Всем привет! только начал изучение TypeScript и при описании типов используемых в модели вылетатет ошибка, а именно "Object literal may only specify known properties, and 'value' does not exist in type '{ [key: number]: any; }'"...
как правильно установить тип объекту _total и внутренним его значениям?

export default class Model {

    _total: { [key: number]: any } = {};

    constructor() {
        super();
        this._total= {
            value: 1,
            btn: {
                add: true,
                rem: false
            }
        };
    }
}
  • Вопрос задан
  • 3233 просмотра
Решения вопроса 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Ну так у вас ключ _total это не number, это string
_total: { [key: string]: any } = {};
UPD: вот тут описано про сигнатуру индексов https://basarat.gitbooks.io/typescript/docs/types/...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
export default class Model {
    _total: { [key: string]: any } = {};

    constructor() {
        super();
        this._total['value'] = 1;
        this._total['btn'] = {
                add: true,
                rem: false
        };
    }
}


Если все будете превращать в any, то толку от typescript не будет. Поэтому лучше типизируйте свои свойства как то так
class Total {
    value: number,
    btn: {
        add: boolean,
        rem: boolean
    }
};

export default class Model {
    _total: Total;

    constructor() {
        super();
        this._total= new Total {
            value: 1,
            btn: {
                add: true,
                rem: false
            }
        };
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы