@typescript_ru

Страница 243 из 669
Aleh
31.05.2017
14:42:52
но если даже babylon просто научат понимать ts, уже будет клево

eslint, prettier, standardjs

Aleksey
31.05.2017
15:04:03
подскажите, можно импортировать json в ts?

Max
31.05.2017
15:06:02
Да

Google
Max
31.05.2017
15:06:19
Ему d.ts прописать надо

Aleksey
31.05.2017
15:17:20
кто-нибудь подскажите решение этой проблемы https://github.com/chybie/ts-json/issues/2

Igor
31.05.2017
17:17:16
https://www.youtube.com/watch?v=9DK5jA5rQ8g Уже обсудили?

Dreamerinnoise
31.05.2017
17:36:49
Алексей
31.05.2017
17:39:01
А ты пробовал Flow?
У него сборка в 5-6 раз быстрее?

Дмитрий
31.05.2017
17:40:38
Ой сомневаюсь ?

Dreamerinnoise
31.05.2017
17:40:48
Но ведь вопрос всё равно надо задать

Yumi
31.05.2017
19:09:56
TypeScript-React-Starter #react https://github.com/Microsoft/TypeScript-React-Starter

Adam
31.05.2017
20:49:43
кто-нибудь придерживается dependency inversion при написании ts-классов?

da horsie
31.05.2017
20:51:06
йа

Aleh
31.05.2017
20:51:41
вводит ли абстракции?)

da horsie
31.05.2017
20:52:00
у меня от этого волосы на ладонях выросли

Google
Adam
31.05.2017
20:54:58
как быть со свободными функциями, придерживаясь DI? Они считаются зависимостями?

da horsie
31.05.2017
20:56:07
а почему нет?

функция считай тот же объект, только с одним неявным методом

Aleh
31.05.2017
20:56:43
а функции уже что, не объект что ли?)

Adam
31.05.2017
20:56:44
например, я бы с радостью испоьзовал метод last<T?source: Array<T> | string) для получения поледнего элемента массива/строки

задолбаешься внедрять его через конструктор везде, где захочешь получить последний элемент. Конечно, его внедрить можно через прототип, но это лишь пример. Как использовать свободные функции внутри классов, придерживаясь DI?

Aleh
31.05.2017
20:58:50
Dep Inversion и Dep Injection это две большие разницы

da horsie
31.05.2017
20:59:30
чето я не понимаю сложности

в чем беда-то?

Adam
31.05.2017
20:59:35
dep injection - Это один из паттернов Dep inversion, как я понимаю

Aleh
31.05.2017
21:00:25
не совсем

если вы хотите dep inversion, то поймите от чего и зачем вы хотите абстрагироваться

Adam
31.05.2017
21:01:13
в полностью OOP-lang я бы создавал сервис с этим методом и передал бы его конструктору, например. Тогда зависимость внедрена явно. Если я просто вызову свободную функцию из класса, то зависимость неявная

Aleh
31.05.2017
21:01:54
import { last } from "My/Collection"

очень явно

da horsie
31.05.2017
21:02:00
и что такое "полностью ООП"?

Adam
31.05.2017
21:02:19
без свободных функций

Aleh
31.05.2017
21:02:30
смолток что ли

Adam
31.05.2017
21:02:39
java, С#

Google
Aleh
31.05.2017
21:02:54
java, С#
они имеют отношения к ооп поменьше, чем жаваскрипт)

процедурщина на стероидах

da horsie
31.05.2017
21:03:58
в java даже лямбды есть

как и в шарпе собственно

Adam
31.05.2017
21:05:01
глобальной области нет, так понятнее? Нельзя определить именованную функцию вне класса

Aleh
31.05.2017
21:06:48
в ts есть модули ж

da horsie
31.05.2017
21:06:56
ну давай так. какую задачу ты хочешь решить? почему глобальная функция тебе мешает?

Aleh
31.05.2017
21:06:58
не надо ничего в глобальную область пихать

import { last } from "My/Collection"
вот чем этот вариант не подходит?

Adam
31.05.2017
21:08:13
причём здесь импорт?

Неужели без примера вопрос не понятен?ъ

da horsie
31.05.2017
21:08:34
не особо

Aleh
31.05.2017
21:09:32
причём здесь импорт?
решает проблему явных зависимостей

da horsie
31.05.2017
21:09:58
неявных)

Aleh
31.05.2017
21:10:04
ну т.е. делает их явными, а проблему неявных да

da horsie
31.05.2017
21:10:06
явные обычно не проблема)

Aleh
31.05.2017
21:10:29
явные обычно не проблема)
ну эт не совсем правда, другое дело, что неявные большая проблема)

Adam
31.05.2017
21:15:28
function isEven(num: number) { return num % 2 == 0; } interface IPlacable { placeOnTheScreen(): void; } class Items { private items: IPlacable[]; place() { for (let item of this.items) { if (isEven(Math.random())) item.placeOnTheScreen(); }; } }

здесь isEven - неявная зависимость. В java или С# она бы передавалась в классе, динамические языки позволяют использовать её так, как япоказал. Если примерживаться инверсии зависимостей, как её внедрять, через конструктор?

da horsie
31.05.2017
21:17:18
это реальный пример?

Google
Adam
31.05.2017
21:17:29
нет

Aleh
31.05.2017
21:18:00
это ничем не отличается от приватной функции, например

если это в одном модуле, то тоже самое, что приватная функция, если в разных, то import делает зависимость явной

Adam
31.05.2017
21:18:39
даже если isEven определена в другом модуле?

da horsie
31.05.2017
21:19:51
в чем смысл передачи isEven как зависимости?

почему не сделать ее приватным методом?

Adam
31.05.2017
21:20:57
потому что это утилита многократного использования, и никакого отношения к спсику предметов не имеет

Admin
ERROR: S client not available

Adam
31.05.2017
21:21:23
здесь это просто способ принятия решений, размещать объект или нет

da horsie
31.05.2017
21:21:38
не всякое "дублирование" кода надо устранять

Adam
31.05.2017
21:21:55
знаю, обычно пишу её инлайн

da horsie
31.05.2017
21:22:48
классы вроде Utils или Tools это зачастую признак недостаточно продуманной доменной модели

Adam
31.05.2017
21:23:25
повторяшь из учебника, и даже не понимаешь, о чём речь

тут одна свободная функция, какие util классы?

da horsie
31.05.2017
21:23:50
ты ее назвал утилитой

Aleh
31.05.2017
21:24:41
короче DIP про то, что у вас есть абстракция. Тут какой-то конкретной абстракции, за которой можно спрятать low-level module нет, поэтому и инверсию делать нет смысла

Adam
31.05.2017
21:24:52
ладно, похоже, что Aleh прав

Aleh
31.05.2017
21:25:10
конечно, можно представить оператор % как какую-то низкоуровневую деталь, но вы точно захотите потом менять эту деталь?

Adam
31.05.2017
21:25:50
expression в if - принятие решение о размещении нового противника на экране, например

Google
da horsie
31.05.2017
21:26:20
тогда сделай штуку "приниматель решения"

и ее внедряй

Aleh
31.05.2017
21:26:41
ну да, а если абстракция таки есть, то вы уже по опыту других языков знаете, как ее внедрять)

da horsie
31.05.2017
21:26:57
это уже будет какой-то внятный кусок доменной логики

который можно будет заменить на другой

Adam
31.05.2017
21:34:33
спасибо за ответы

Kenya-West
01.06.2017
02:45:40
Как в интерфейсе прописать, чтобы свойство могло иметь одно строковое значение из нескольких, остальные значения не валидны

А, хотя что я туплю. Интерфейсы на то и интерфейсы, чтобы давать интерфейс. Ограничением входящих значений занимается что-то другое. Верно ведь?

Kenya-West
01.06.2017
03:44:20
А, можно вроде и так:

interface IComputer { type: 'ПК' | 'Моноблок' | 'ноутбук' | 'смартфон' | 'другое устройство'; installedOS: string; installedApps: string[]; }

andretshurotshka?❄️кде
01.06.2017
03:49:36
А зачем I в интерфейсе? ?

Kenya-West
01.06.2017
03:57:19
ХЗ. Я новичок, я его всего лишь полгода изучаю

Не судите строго, каароч

Юрий
01.06.2017
03:57:49
Это соглашение именования интерфейсов из C#

andretshurotshka?❄️кде
01.06.2017
04:00:46
Ну вот смотри, function handleSomething(something: ISomething) - какой здесь смысл в I? Это может быть как тип, так и интерфейс, так и класс

Грубо говоря, есть название сущности: Something. Всё остальное - лишний мусор вокруг

I, Interface, Abstract в названии - признак того, что чувак не подумал при написании хорошо

уже обсуждали)

Kenya-West
01.06.2017
04:05:44
Ну вот смотри, function handleSomething(something: ISomething) - какой здесь смысл в I? Это может быть как тип, так и интерфейс, так и класс
Мой класс использует интерфейсы. Интерфейсы в свою очередь юзают типы. А типы вообще элементарщину миксуют у себя там. Такая вот лестница говнокода. Но оно работает, и я не жалуюсь (правда, линтеры жалуются, но кто когда их слушал?).

Страница 243 из 669