Size: a a a

TypeScript — русскоговорящее сообщество

2020 March 29

MS

Max Syabro in TypeScript — русскоговорящее сообщество
По коду понятно что в первом случае ты не сможешь поменять исходный объект модифицируя результат
источник

Ti

Time is the side effect in TypeScript — русскоговорящее сообщество
Очевидно первый вариант явнее
источник

MS

Max Syabro in TypeScript — русскоговорящее сообщество
короче хули тут обсуждать
тебе советы дали - попробуй оба варианта, реши сам
источник

MS

Max Syabro in TypeScript — русскоговорящее сообщество
но из дао питона - явное лучше неявного :)
источник

MS

Maxim Sosnov in TypeScript — русскоговорящее сообщество
Max Syabro
По коду понятно что в первом случае ты не сможешь поменять исходный объект модифицируя результат
это верно же только для примитивов 🤔
источник

MS

Max Syabro in TypeScript — русскоговорящее сообщество
Maxim Sosnov
это верно же только для примитивов 🤔
можно дипклоне херачить :)
источник

MS

Max Syabro in TypeScript — русскоговорящее сообщество
в питоне есть @property
как раз для геттеров
и как показывает десятилетняя практика - если можно без него - лучше без него
источник

PS

Pavel Shakhov (pongo) in TypeScript — русскоговорящее сообщество
Алексей
Что это вообще такое? Чем отличается тип HTMLElement от типа number, string и прочих? Какие есть дочерние типы, кроме HTMLInputElement, HTMLSpanElement (или мне просто писать HTML<Tag>Element)? Мне нужно приводить все переменные, которые являются дом элементами, к этим типам (и что будет если я не приведу)? Эти типы используются только чтобы приводить переменные (которые являются дом элементами), или где либо еще?

Ну или хотя бы помочь с запросом в гугл, потому что у меня не удалось найти подробную инфу по этому поводу, а в изучаемых темах я привык разбираться досконально
да вот простой пример:
interface Person {
   firstName: string;
   lastName: string;
}

function greeter(person: Person) {
   return "Hello, " + person.firstName + " " + person.lastName;
}

const user = { firstName: "Jane", lastName: "User" };

console.log(greeter(user));

всякие HTMLElement объявляются так же как этот Person. можно через interface, можно через type — это уж кому как нравится. т.е. ты просто описываешь какие свойства и методы должны быть у объекта
источник

PS

Pavel Shakhov (pongo) in TypeScript — русскоговорящее сообщество
Max Syabro
По коду понятно что в первом случае ты не сможешь поменять исходный объект модифицируя результат
почему Map из жс использует size, а не getSize()? сеттера у size нет
источник

MS

Max Syabro in TypeScript — русскоговорящее сообщество
потому что fuck you that’s why ответ на любые вопросы по архитектуре жс
источник

MS

Max Syabro in TypeScript — русскоговорящее сообщество
еще плюс в сторону метода - если ты где-то забудешь сделать инстанс своего обьекта из словаря
источник

MS

Max Syabro in TypeScript — русскоговорящее сообщество
getData() кинет ошибку, тогда как .data тихо вернет undefined
источник

А

Алексей in TypeScript — русскоговорящее сообщество
Pavel Shakhov (pongo)
да вот простой пример:
interface Person {
   firstName: string;
   lastName: string;
}

function greeter(person: Person) {
   return "Hello, " + person.firstName + " " + person.lastName;
}

const user = { firstName: "Jane", lastName: "User" };

console.log(greeter(user));

всякие HTMLElement объявляются так же как этот Person. можно через interface, можно через type — это уж кому как нравится. т.е. ты просто описываешь какие свойства и методы должны быть у объекта
А, уже вроде начинаю соображать

Но некоторые вещи уже объявлены и работают из "коробки". Например я могу привести элемент к типу HTMLInputElement и получить его value. И это уже работает без объявления чего-либо
источник

PS

Pavel Shakhov (pongo) in TypeScript — русскоговорящее сообщество
Алексей
А, уже вроде начинаю соображать

Но некоторые вещи уже объявлены и работают из "коробки". Например я могу привести элемент к типу HTMLInputElement и получить его value. И это уже работает без объявления чего-либо
исходные коды доступны, можешь посмотреть как они объявлены https://github.com/microsoft/TypeScript/blob/master/lib/lib.dom.d.ts
источник

А

Алексей in TypeScript — русскоговорящее сообщество
Pavel Shakhov (pongo)
исходные коды доступны, можешь посмотреть как они объявлены https://github.com/microsoft/TypeScript/blob/master/lib/lib.dom.d.ts
Понял, спасибо большое за помощь)
источник

MR

Mike Rize in TypeScript — русскоговорящее сообщество
Гайз, я разрабатываю по TDD.
Для меня привычно делать проверки подобного рода.
Вот пример ф-ции, которая проверят на наличие обязательных пропсов в компоненте и кидает варнинг если что-то не так.
Как мне сделать что-то подобное в TS?
источник

АЗ

Андрей Звёздочка in TypeScript — русскоговорящее сообщество
Mike Rize
Гайз, я разрабатываю по TDD.
Для меня привычно делать проверки подобного рода.
Вот пример ф-ции, которая проверят на наличие обязательных пропсов в компоненте и кидает варнинг если что-то не так.
Как мне сделать что-то подобное в TS?
Тс за тебя это проверяет.
источник

MR

Mike Rize in TypeScript — русскоговорящее сообщество
Андрей Звёздочка
Тс за тебя это проверяет.
Я понимаю, а как мне проверить кинул тс варнинг или нет?
источник

АЗ

Андрей Звёздочка in TypeScript — русскоговорящее сообщество
Mike Rize
Я понимаю, а как мне проверить кинул тс варнинг или нет?
Если у тебя некорректные типы, то код не соберётся.
источник

MR

Mike Rize in TypeScript — русскоговорящее сообщество
Андрей Звёздочка
Если у тебя некорректные типы, то код не соберётся.
Ну да, это я тоже понимаю. Получается что такая утилита мне не нужна в ТС.
источник