У меня есть несколько различных ситуаций, в которых я пытаюсь определить самодельной свойство на массив или объект в машинописи, но обычно получаю ошибку:Лучший способ решить ошибку машинопись - свойство не существует на типе
«Недвижимость х не существует на тип объект (или типа Array)»
Например я использую машинопись в угловом и имею определенную сферу на основе файл углового определения типа:
scope:ng.IScope
Но тогда, когда я пытаюсь для создания нового свойства по области:
scope.anotherProperty = "string";
Я получаю ошибку, упомянутую выше. Я знаю, что могу решить, выполнив одно из следующих действий:
scope["anotherProperty"] = "string";
ИЛИ
(<any>scope).anotherProperty = "string;
Другой пример, когда у меня есть что-то вроде этого в моем графике d3:
function panZoomNode (node:any) {
for (var i = 0; i < renderedNodes.length; i++) {
if (node.id === renderedNodes[i].id) {
}
}
}
В идеале , Я хотел бы изменить этот параметр (node: any) на что-то вроде:
(node:Object)
Но когда я это делаю, я получаю сообщение об ошибке «Идентификатор свойства не существует в объекте типа». Я знаю, что могу исправить это с помощью решений, упомянутых выше, но для меня это кажется неаккуратным. Есть ли лучший способ или лучший тип машинописного текста, позволяющий им правильно запускать как массивы, так и объекты?
Благодаря
Можете ли вы наследовать от ng.IScope, добавить другое свойство в определение и его использование? Последняя проблема вызвана тем, что объект не имеет свойства id. Либо вы оставите его свободно, либо создайте класс/интерфейс. –
Да, я должен унаследовать от этого, что лучше всего подходит для добавления определения? Тогда это позволит мне сделать что-то вроде «scope.anotherProperty = string». Кроме того, если бы я собирался добавить интерфейс, я бы хотел просто установить все свойства, которые мог бы иметь объект-узел, или если я просто использую id, лучше всего добавить id? а затем вызовите это в определении параметра.Спасибо – bschmitty
Я добавил ответ ниже. Вместо того, чтобы наследовать от ng.IScope, вы можете просто расширить его. –