g1er / Andrew

0 stars 0 forks source link

defined argument's type #26

Closed g1er closed 6 years ago

IgorKulishov commented 6 years ago

Can you please specify data type of getter, so please change to get productName(): string {

g1er commented 6 years ago

Done. Pls check

IgorKulishov commented 6 years ago

метод logProductName ничего не возвращает только выводит в консоль, поэтому хотя и можно оставить :any, но желательно убрать :any (показать что ничего не возвращается) после названия метода:

 public logProductName(): any{
         console.log("product:" + this.productName);             console.log("product:" + this.productName);
     }       }

Вообще any хотя и можно вначале ставить где угодно когда пишешь код и пока не знаешь тип данных возвращаемый методом. Но после того как код написан, по возможности желательно заменить any конкретными типами данных. Или убрать тип данных, если метод ничего не возвращает. Any позволяет программировать как в классическом JS т.е. можно не определять тип данных, при этом считается не лучшим стилем.

IgorKulishov commented 6 years ago

Static метод logProductName() а) так же ничего не возвращает, а только выводит в консоль, поэтому хотя и можно оставить :any, все таки правильней было бы ничего не ставить после названия метода:

public logProductName(): any{
         console.log("product:" + this.productName);             console.log("product:" + this.productName);
     }       }

б) кроме того хотел объяснить суть static , хотя его и можно использовать для чего угодно, но все таки предназначение что бы возвращать статические значения (типа константы, например я бы положил туда url адрес на какой-нибудь сервер, адрес домена или плохой, но часто случающийся на практике пример с хранением паролей, хотя это плохой пример и не стоит хранить права доступа в коде, но иногда так делают для временного тестирования). Таким образом я предлагаю привести другой пример со статик, который возвращает какое-либо постоянное значение (а не console.log которое не хранит ничего в себе и просто выводит на печать). Вот к примеру другой пример из документации где кстати показывают обращение к static внутри самого класса при это возвращают начальные координаты x, y:

class Grid {
    static origin = {x: 0, y: 0};
    calculateDistanceFromOrigin(point: {x: number; y: number;}) {
        let xDist = (point.x - Grid.origin.x);
        let yDist = (point.y - Grid.origin.y);
        return Math.sqrt(xDist * xDist + yDist * yDist) / this.scale;
    }
    constructor (public scale: number) { }
}

let grid1 = new Grid(1.0);  // 1x scale
let grid2 = new Grid(5.0);  // 5x scale

console.log(grid1.calculateDistanceFromOrigin({x: 10, y: 10}));
console.log(grid2.calculateDistanceFromOrigin({x: 10, y: 10}));

Т.е. ты видешь внутри calculateDistanceFromOrigin приводится расчет xDist, yDist и производится обращение к static свойству static origin = {x: 0, y: 0}; посредством Grid.origin.x для рассчета let xDist = (point.x - Grid.origin.x);.

g1er commented 6 years ago

Я изменил пример и залил на гит в свою ветку. Я понял суть static, но пример привел только на статик свойство. Долго ломал голову, но не смог ничего выдумать относительно статик метода. Все мои идеи упирались в необходимость создания объекта класса

IgorKulishov commented 6 years ago

Merged